summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-07-12 22:11:37 +0700
committerhathach <[email protected]>2018-07-12 22:15:22 +0700
commit2d79023a5a45f6988cd1df75d183044157af7b7e (patch)
tree96fb541142e1e26774f8a818f995e82c548a17ef /examples
parenta0849fee9f4b268ccc9798c70c654a835f8e20c8 (diff)
update example
Diffstat (limited to 'examples')
-rw-r--r--examples/device/nrf52840/src/main.c1
-rw-r--r--examples/device/nrf52840/src/msc_device_app.c56
-rw-r--r--examples/device/nrf52840/src/tusb_config.h24
-rw-r--r--examples/device/nrf52840/src/tusb_descriptors.c48
4 files changed, 34 insertions, 95 deletions
diff --git a/examples/device/nrf52840/src/main.c b/examples/device/nrf52840/src/main.c
index 9b173c802..2877801cf 100644
--- a/examples/device/nrf52840/src/main.c
+++ b/examples/device/nrf52840/src/main.c
@@ -87,6 +87,7 @@ void virtual_com_task(void)
uint32_t count = tud_cdc_read(buf, sizeof(buf));
tud_cdc_write(buf, count);
+ tud_cdc_flush();
}
}
diff --git a/examples/device/nrf52840/src/msc_device_app.c b/examples/device/nrf52840/src/msc_device_app.c
index 46c161e95..3f97863e4 100644
--- a/examples/device/nrf52840/src/msc_device_app.c
+++ b/examples/device/nrf52840/src/msc_device_app.c
@@ -46,22 +46,6 @@
//--------------------------------------------------------------------+
// MACRO CONSTANT TYPEDEF
//--------------------------------------------------------------------+
-static scsi_inquiry_data_t const mscd_inquiry_data =
-{
- .is_removable = 1,
- .version = 2,
- .response_data_format = 2,
- .vendor_id = "tinyusb",
- .product_id = "MSC Example",
- .product_revision = "0.01"
-};
-
-static scsi_read_capacity10_data_t const mscd_read_capacity10_data =
-{
- .last_lba = ENDIAN_BE(DISK_BLOCK_NUM-1), // read capacity
- .block_size = ENDIAN_BE(DISK_BLOCK_SIZE)
-};
-
scsi_sense_fixed_data_t mscd_sense_data =
{
.response_code = 0x70,
@@ -69,14 +53,6 @@ scsi_sense_fixed_data_t mscd_sense_data =
.additional_sense_len = sizeof(scsi_sense_fixed_data_t) - 8
};
-static scsi_read_format_capacity_data_t const mscd_format_capacity_data =
-{
- .list_length = 8,
- .block_num = ENDIAN_BE(DISK_BLOCK_NUM), // write capacity
- .descriptor_type = 2, // TODO formatted media, refractor to const
- .block_size_u16 = ENDIAN_BE16(DISK_BLOCK_SIZE)
-};
-
static scsi_mode_parameters_t const msc_dev_mode_para =
{
.mode_data_length = 3,
@@ -110,26 +86,11 @@ int32_t tud_msc_scsi_cb (uint8_t rhport, uint8_t lun, uint8_t const scsi_cmd[16]
switch (scsi_cmd[0])
{
- case SCSI_CMD_INQUIRY:
- ptr = &mscd_inquiry_data;
- len = sizeof(scsi_inquiry_data_t);
- break;
-
- case SCSI_CMD_READ_CAPACITY_10:
- ptr = &mscd_read_capacity10_data;
- len = sizeof(scsi_read_capacity10_data_t);
- break;
-
case SCSI_CMD_REQUEST_SENSE:
ptr = &mscd_sense_data;
len = sizeof(scsi_sense_fixed_data_t);
break;
- case SCSI_CMD_READ_FORMAT_CAPACITY:
- ptr = &mscd_format_capacity_data;
- len = sizeof(scsi_read_format_capacity_data_t);
- break;
-
case SCSI_CMD_MODE_SENSE_6:
ptr = &msc_dev_mode_para;
len = sizeof(msc_dev_mode_para);
@@ -175,22 +136,5 @@ int32_t tud_msc_scsi_cb (uint8_t rhport, uint8_t lun, uint8_t const scsi_cmd[16]
return len;
}
-//--------------------------------------------------------------------+
-// APPLICATION CODE
-//--------------------------------------------------------------------+
-void msc_app_task(void* param)
-{ // no need to implement the task yet
- (void) param;
-
- OSAL_TASK_BEGIN
-
- OSAL_TASK_END
-}
-
-void msc_app_init (void)
-{
-
-}
-
#endif
diff --git a/examples/device/nrf52840/src/tusb_config.h b/examples/device/nrf52840/src/tusb_config.h
index 4e7210bcb..258a5983d 100644
--- a/examples/device/nrf52840/src/tusb_config.h
+++ b/examples/device/nrf52840/src/tusb_config.h
@@ -78,17 +78,20 @@
#define CFG_TUD_HID_GENERIC 0 // TODO need update
/*------------------------------------------------------------------*/
-/* CLASS DRIVER
+/* CDC DEVICE
*------------------------------------------------------------------*/
// FIFO size of CDC TX and RX
#define CFG_TUD_CDC_RX_BUFSIZE 64
#define CFG_TUD_CDC_TX_BUFSIZE 64
-
// TX is sent automatically every Start of Frame event.
// If not enabled, application must call tud_cdc_flush() periodically
-#define CFG_TUD_CDC_FLUSH_ON_SOF 1
+#define CFG_TUD_CDC_FLUSH_ON_SOF 0
+
+/*------------------------------------------------------------------*/
+/* MSC DEVICE
+ *------------------------------------------------------------------*/
// Number of supported Logical Unit Number (At least 1)
#define CFG_TUD_MSC_MAXLUN 1
@@ -96,6 +99,21 @@
// Buffer size of Device Mass storage
#define CFG_TUD_MSC_BUFSIZE 512
+// Number of Blocks
+#define CFG_TUD_MSC_BLOCK_NUM 16
+
+// Block size
+#define CFG_TUD_MSC_BLOCK_SZ 512
+
+// Vendor name included in Inquiry response, max 8 bytes
+#define CFG_TUD_MSC_VENDOR "tinyusb"
+
+// Product name included in Inquiry response, max 16 bytes
+#define CFG_TUD_MSC_PRODUCT "tusb msc"
+
+// Product revision string included in Inquiry response, max 4 bytes
+#define CFG_TUD_MSC_PRODUCT_REV "1.0"
+
//--------------------------------------------------------------------+
// USB RAM PLACEMENT
//--------------------------------------------------------------------+
diff --git a/examples/device/nrf52840/src/tusb_descriptors.c b/examples/device/nrf52840/src/tusb_descriptors.c
index c6c261b80..e5d73333d 100644
--- a/examples/device/nrf52840/src/tusb_descriptors.c
+++ b/examples/device/nrf52840/src/tusb_descriptors.c
@@ -41,51 +41,27 @@
//--------------------------------------------------------------------+
// STRING DESCRIPTORS
//--------------------------------------------------------------------+
-#define STRING_LEN_UNICODE(n) (2 + (2*(n))) // also includes 2 byte header
-#define ENDIAN_BE16_FROM( high, low) ENDIAN_BE16(high << 8 | low)
// array of pointer to string descriptors
uint16_t const * const string_desc_arr [] =
{
- [0] = (uint16_t []) { // supported language
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(1), TUSB_DESC_STRING ),
- 0x0409 // English
- },
+ // 0: is supported language = English
+ TUD_DESC_STRCONV(0x0409),
- [1] = (uint16_t []) { // manufacturer
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(11), TUSB_DESC_STRING),
- 't', 'i', 'n', 'y', 'u', 's', 'b', '.', 'o', 'r', 'g' // len = 11
- },
+ // 1: Manufacturer
+ TUD_DESC_STRCONV('t', 'i', 'n', 'y', 'u', 's', 'b', '.', 'o', 'r', 'g'),
- [2] = (uint16_t []) { // product
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(14), TUSB_DESC_STRING),
- 't', 'i', 'n', 'y', 'u', 's', 'b', ' ', 'd', 'e', 'v', 'i', 'c', 'e' // len = 14
- },
+ // 2: Product
+ TUD_DESC_STRCONV('t', 'i', 'n', 'y', 'u', 's', 'b', ' ', 'd', 'e', 'v', 'i', 'c', 'e'),
- [3] = (uint16_t []) { // serials
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(4), TUSB_DESC_STRING),
- '1', '2', '3', '4' // len = 4
- },
+ // 3: Serials TODO use chip ID
+ TUD_DESC_STRCONV('1', '2', '3', '4', '5', '6'),
- [4] = (uint16_t []) { // CDC Interface
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(3), TUSB_DESC_STRING),
- 'c', 'd', 'c' // len = 3
- },
+ // 4: CDC Interface
+ TUD_DESC_STRCONV('t','u','s','b',' ','c','d','c'),
- [5] = (uint16_t []) { // Keyboard Interface
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(5), TUSB_DESC_STRING),
- 'm', 'o', 'u', 's', 'e' // len = 5
- },
-
- [6] = (uint16_t []) { // Keyboard Interface
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(8), TUSB_DESC_STRING),
- 'k', 'e', 'y', 'b', 'o', 'a', 'r', 'd' // len = 8
- },
-
- [7] = (uint16_t []) { // MSC Interface
- ENDIAN_BE16_FROM( STRING_LEN_UNICODE(3), TUSB_DESC_STRING),
- 'm', 's', 'c' // len = 3
- }
+ // 5: MSC Interface
+ TUD_DESC_STRCONV('t','u','s','b',' ','m','s','c'),
};
// tud_desc_set is required by tinyusb stack