diff options
author | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-10-01 21:44:06 +0000 |
---|---|---|
committer | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-10-01 21:44:06 +0000 |
commit | f1cae2aa9e420242134fb0df3ff06f6605bdffab (patch) | |
tree | 386a5efa0db92879f98f7e9526c178d1ed80a18d /firmware | |
parent | 7a651e94c5fc5fa38da05e68a776d396e11e534d (diff) |
- add command to read rc632 serial number via USB
git-svn-id: https://svn.openpcd.org:2342/trunk@250 6dc7ffe9-61d6-0310-9af1-9938baff3ed1
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/include/openpcd.h | 2 | ||||
-rw-r--r-- | firmware/src/os/usbcmd_generic.c | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/firmware/include/openpcd.h b/firmware/include/openpcd.h index cdfb7a7..0cceb53 100644 --- a/firmware/include/openpcd.h +++ b/firmware/include/openpcd.h @@ -45,8 +45,10 @@ enum openpcd_cmd_class { #define OPENPCD_CLS2CMD(x) (x << 4) +/* Generic */ #define OPENPCD_CMD_GET_VERSION (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC)) #define OPENPCD_CMD_SET_LED (0x2|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC)) +#define OPENPCD_CMD_GET_SERIAL (0x3|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC)) /* CMD_CLS_RC632 */ #define OPENPCD_CMD_WRITE_REG (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632)) diff --git a/firmware/src/os/usbcmd_generic.c b/firmware/src/os/usbcmd_generic.c index 9dec14e..386692b 100644 --- a/firmware/src/os/usbcmd_generic.c +++ b/firmware/src/os/usbcmd_generic.c @@ -31,6 +31,17 @@ static int gen_usb_rx(struct req_ctx *rctx) DEBUGP("SET LED(%u,%u) ", poh->reg, poh->val); led_switch(poh->reg, poh->val); break; + case OPENPCD_CMD_GET_SERIAL: + DEBUGP("GET SERIAL "); + poh->flags |= OPENPCD_FLAG_RESPOND; +#ifdef PCD + rctx->tot_len += 4; + rc632_get_serial(NULL, (u_int32_t *)poh->data); +#else + /* FIXME: where to get serial in PICC case */ + return USB_ERR(USB_ERR_CMD_NOT_IMPL); +#endif + break; default: DEBUGP("UNKNOWN "); return USB_ERR(USB_ERR_CMD_UNKNOWN); |