aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Barksdale <amatus@amatus.name>2016-08-02 13:56:00 -0500
committerDavid Barksdale <amatus@amatus.name>2016-08-02 22:12:15 -0500
commit08a23051ab4418ade7708a047c62e479ab19c829 (patch)
tree639e59973155486dd8d098f01828ac800b243be2
parentc236823d65c8354b17969a55ed671a1c7ff2602f (diff)
Got stuff working better, images not in flash yet
-rw-r--r--laser-tag software/disk.c1002
-rw-r--r--laser-tag software/disk.h11
-rw-r--r--laser-tag software/epaper.c11
-rw-r--r--laser-tag software/main.c12
-rw-r--r--laser-tag software/radio.c28
-rw-r--r--laser-tag software/usb_descriptor.c61
-rw-r--r--laser-tag software/usb_descriptor.h6
7 files changed, 330 insertions, 801 deletions
diff --git a/laser-tag software/disk.c b/laser-tag software/disk.c
index 84b1c3f..5a89d66 100644
--- a/laser-tag software/disk.c
+++ b/laser-tag software/disk.c
@@ -1,724 +1,278 @@
-/**HEADER********************************************************************
- *
- * Copyright (c) 2008, 2013 - 2014 Freescale Semiconductor;
- * All Rights Reserved
- *
- * Copyright (c) 1989-2008 ARC International;
- * All Rights Reserved
- *
- ***************************************************************************
- *
- * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- **************************************************************************
- *
- * $FileName: disk.c$
- * $Version :
- * $Date :
- *
- * Comments:
- *
- * @brief RAM Disk has been emulated via this Mass Storage Demo
- *****************************************************************************/
-
-/******************************************************************************
- * Includes
- *****************************************************************************/
-#include "usb_device_config.h"
-#include "usb.h"
-#include "usb_device_stack_interface.h"
-#include "disk.h"
-#include "adapter_cfg.h"
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
-#include "fsl_device_registers.h"
-#include "fsl_clock_manager.h"
-//#include "board.h"
-#include "fsl_debug_console.h"
-#if (TWR_K64F120M || FRDM_K64F || TWR_K60D100M || TWR_K21F120M || TWR_K65F180M)
-#include "fsl_mpu_hal.h"
-#endif
-#include "fsl_port_hal.h"
-#include <stdio.h>
-#include <stdlib.h>
-#endif
-
-#if SD_CARD_APP
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_BM)
-#include "sd_esdhc_kinetis.h"
-#elif (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
-#include "fsl_sdhc_card.h"
-#include "fsl_gpio_driver.h"
-#include "gpio_pins.h"
-#include "board.h"
-#else
-#include "sd.h"
-#endif
-#endif
-
-#if USBCFG_DEV_COMPOSITE
-#error This application requires USBCFG_DEV_COMPOSITE defined zero in usb_device_config.h. Please recompile usbd with this option.
-#endif
-
-#if !USBCFG_DEV_MSC
-#error This application requires USBCFG_DEV_MSC defined none zero in usb_device_config.h. Please recompile usbd with this option.
-#endif
-
-#if HIGH_SPEED
-
-#if !USBCFG_DEV_EHCI
-#error This application requires USBCFG_DEV_EHCI defined none zero in usb_device_config.h. Please recompile usbd with this option.
-#endif
-
-#endif
-
-extern void Main_Task(uint32_t param);
-#define MAIN_TASK 10
-
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_MQX)
-TASK_TEMPLATE_STRUCT MQX_template_list[] =
-{
- { MAIN_TASK, Main_Task, 2 * 3000L, 9L, "Main", MQX_AUTO_START_TASK, 0, 0 },
- { 0L, 0L, 0L, 0L, 0L, 0L, 0, 0 }
-};
-
-MQX_FILE_PTR g_sdcard_handle;
-#endif
-/*****************************************************************************
- * Constant and Macro's - None
- *****************************************************************************/
-
-/*****************************************************************************
- * Global Functions Prototypes
- *****************************************************************************/
-void TestApp_Init(void);
-
-/****************************************************************************
- * Global Variables
- ****************************************************************************/
-/* Add all the variables needed for disk.c to this structure */
-extern usb_desc_request_notify_struct_t desc_callback;
-usb_application_callback_struct_t msc_application_callback;
-usb_vendor_req_callback_struct_t vend_req_callback;
-usb_class_specific_callback_struct_t class_specific_callback;
-
-msc_config_struct_t g_msd_config;
-#if (RAM_DISK_APP)
-/* Here set storage_disk value to put the 24k buffer to RW region,
- if putting in ZI and 64k ram the ZI region cannot be put in upper/bottom 32k ram for iar */
-disk_struct_t g_disk =
-{
- .storage_disk = {0x01},
-};
-#else
-disk_struct_t g_disk;
-#endif
-
-#if SD_CARD_APP
- #define USE_SDHC_PROTOCOL (1)
- #define USE_SPI_PROTOCOL (0)
-#endif
-
-/*****************************************************************************
- * Local Types - None
- *****************************************************************************/
-
-/*****************************************************************************
- * Local Functions Prototypes
- *****************************************************************************/
-void USB_App_Device_Callback(uint8_t event_type, void* val, void* arg);
-uint8_t USB_App_Class_Callback
-(uint8_t event_type,
- uint16_t value,
- uint8_t ** data,
- uint32_t* size,
- void* arg
- );
-void Disk_App(void);
-/*****************************************************************************
- * Local Variables
- *****************************************************************************/
-#if SD_CARD_APP
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
-#define SDCARD_BLOCK_SIZE_POWER (9)
-sdhc_card_t card = {0};
-sdhc_host_t host = {0};
-#endif
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_BM || OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
-uint32_t g_msc_bulk_out_buff_temp[MSD_RECV_BUFFER_NUM][MSD_RECV_BUFFER_SIZE >> 2];
-uint32_t g_msc_bulk_in_buff_temp[MSD_SEND_BUFFER_SIZE >> 2];
-#endif
-uint8_t *g_msc_bulk_out_buff;
-uint8_t *g_msc_bulk_in_buff;
-#endif
-/*****************************************************************************
- * Local Functions
- *****************************************************************************/
-#if SD_CARD_APP
-os_msgq_handle write_buffer_msg_handler;
-
-/******************************************************************************
- *
- * @name get_write_buffer
- *
- * @brief This function get the buffer for writing
- *
- * @param None
- *
- * @return buffer pointer (return NULL when there is no idle buffer )
- **
- *****************************************************************************/
-uint32_t* get_write_buffer(void)
-{
- uint32_t msg;
- /* wait forever for RTOS; return immediately for bm */
- if (OS_MsgQ_recv(write_buffer_msg_handler, (void*)&msg, OS_MSGQ_RECEIVE_BLOCK_ON_EMPTY, 0) == OS_MSGQ_OK)
- {
- return (uint32_t*)msg;
- }
- return NULL;
-}
-
-/******************************************************************************
- *
- * @name get_write_buffer
- *
- * @brief This function get the buffer for writing
- *
- * @param buffer : The buffer pointer
- *
- * @return None
- **
- *****************************************************************************/
-void free_write_buffer(uint32_t* buffer)
-{
- uint32_t address = (uint32_t)buffer;
- OS_MsgQ_send(write_buffer_msg_handler, (void*)(&address), 0);
-}
-#endif
-
-#if MUTILE_BUFFER && (((OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK) && (USE_RTOS)) || (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_MQX))
-os_msgq_handle write_msg_handler;
-os_mutex_handle sdhc_mutex;
-
-static void write_task(void *arg)
-{
- uint8_t* buff_ptr;
- uint32_t offset;
- uint32_t size;
- uint32_t msg[3];
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
- sdhc_status_t error_code = kStatus_SDHC_NoError;
-#else
- _mqx_uint error_code = MQX_OK;
-#endif
-
- while (OS_MsgQ_recv(write_msg_handler, (void*)&msg, OS_MSGQ_RECEIVE_BLOCK_ON_EMPTY, 0) == OS_MSGQ_OK)
- {
- buff_ptr = (uint8_t*)msg[0];
- offset = msg[1];
- size = msg[2];
-
- OS_Mutex_lock(sdhc_mutex);
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
- error_code = SDCARD_DRV_WriteBlocks(&card, buff_ptr, offset >> SDCARD_BLOCK_SIZE_POWER, size >> SDCARD_BLOCK_SIZE_POWER);
-#elif (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_MQX)
- error_code = sd_write_device_sectors(g_sdcard_handle, offset >> SDCARD_BLOCK_SIZE_POWER, size >> SDCARD_BLOCK_SIZE_POWER, 3, buff_ptr, NULL);
-#endif
- OS_Mutex_unlock(sdhc_mutex);
- free_write_buffer((uint32_t*)buff_ptr);
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
- if (error_code != kStatus_SDHC_NoError)
-#elif (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_MQX)
- if (error_code != MQX_OK)
-#endif
- {
- g_disk.read_write_error = 1;
- USB_PRINTF("Write SD card error, error = 0x%x.\tPlease check recv buff size(must be less than 128 sectors).\r\n", error_code);
- }
- }
-}
-#endif
-
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK && SD_CARD_APP)
-#if defined(FSL_RTOS_MQX)
-#include "fsl_sdhc_driver.h"
-void SDHC_MQX_IRQHandler(void)
-{
-#if defined BSP_FSL_SDHC_USING_IRQ
- SDHC_DRV_DoIrq(0);
-#endif
-}
-#endif
-
-/* don't use interrupt to detect the sdcard */
-gpio_input_pin_user_config_t sdhc_detect_pin[2];
-
-void sdhc_detect_io_init(void)
-{
- for (int i = 0; i < 2; ++i)
- {
- sdhc_detect_pin[i].pinName = sdhcCdPin[i].pinName;
- sdhc_detect_pin[i].config.isPullEnable = sdhcCdPin[i].config.isPullEnable;
- sdhc_detect_pin[i].config.pullSelect = sdhcCdPin[i].config.pullSelect;
- sdhc_detect_pin[i].config.isPassiveFilterEnabled = sdhcCdPin[i].config.isPassiveFilterEnabled;
- sdhc_detect_pin[i].config.interrupt = kPortIntDisabled; /* don't use interrupt */
- }
-
- GPIO_DRV_Init(sdhc_detect_pin, NULL);
-}
-
-uint8_t sdhc_detect(void)
-{
- uint32_t value = 0;
- if (sdhc_detect_pin[0].config.pullSelect == kPortPullUp) /* pull up */
- {
- value = GPIO_DRV_ReadPinInput(sdhc_detect_pin[0].pinName);
- return (!value);
- }
- else /* pull down */
- {
- return (GPIO_DRV_ReadPinInput(sdhc_detect_pin[0].pinName));
- }
-}
-
-uint8_t SD_Init(void)
-{
- sdhc_user_config_t config = {0};
- /* enable SDHC module instance */
- CLOCK_SYS_EnableSdhcClock(0);
- /* disable mpu for kSdhcTransModeAdma2 */
-#if (TWR_K64F120M || FRDM_K64F || TWR_K60D100M || TWR_K21F120M || TWR_K65F180M)
- MPU_HAL_Disable(MPU);
-#endif
- /* initialize user sdhc configuration structure */
- config.transMode = kSdhcTransModeAdma2; //kSdhcTransModePio;
- config.clock = SDMMC_CLK_100KHZ;
- config.cdType = kSdhcCardDetectGpio;
- /* initialize the SDHC driver with the user configuration */
- if (SDHC_DRV_Init(BOARD_SDHC_INSTANCE, &host, &config) != kStatus_SDHC_NoError)
- {
- USB_PRINTF("SDHC_DRV_Init failed\r\n");
- return 0;
- }
-
-#if defined (FSL_RTOS_MQX)
- OS_install_isr(SDHC_IRQn, SDHC_MQX_IRQHandler, NULL);
-#endif
-#if (USE_RTOS)
- OS_intr_init(SDHC_IRQn, 5, 0, TRUE);
-#endif
-
- /* A card is detected, now initialize the card driver */
- if (kStatus_SDHC_NoError != SDCARD_DRV_Init(&host, &card))
- {
- USB_PRINTF("SDCARD_DRV_Init failed\r\n");
- SDHC_DRV_Shutdown(card.hostInstance);
- return 0;
- }
- return 1;
-}
-
-#endif
-
-/******************************************************************************
- *
- * @name Disk_App
- *
- * @brief
- *
- * @param None
- *
- * @return None
- *
- *****************************************************************************/
-void Disk_App(void)
-{
- /* User Code */
- return;
-}
-
-/******************************************************************************
- *
- * @name USB_App_Device_Callback
- *
- * @brief This function handles the callback
- *
- * @param pointer :
- * @param event_type : value of the event
- * @param val : gives the configuration value
- *
- * @return None
- *
- *****************************************************************************/
-void USB_App_Device_Callback(uint8_t event_type, void* val, void* arg)
-{
- if (event_type == USB_DEV_EVENT_BUS_RESET)
- {
- g_disk.start_app = FALSE;
- if (USB_OK == USB_Class_MSC_Get_Speed(g_disk.app_handle, &g_disk.speed))
- {
- USB_Desc_Set_Speed(g_disk.app_handle, g_disk.speed);
- }
- }
- else if (event_type == USB_DEV_EVENT_ENUM_COMPLETE)
- {
- g_disk.start_app = TRUE;
- }
- else if (event_type == USB_DEV_EVENT_ERROR)
- {
- /* add user code for error handling */
- }
- else if (event_type == USB_MSC_DEVICE_GET_SEND_BUFF_INFO)
- {
- if (NULL != val)
- {
-#if SD_CARD_APP
- *((uint32_t *)val) = (uint32_t)MSD_SEND_BUFFER_SIZE;
-#elif RAM_DISK_APP
- *((uint32_t *)val) = (uint32_t)DISK_SIZE_NORMAL;
-#endif
- }
- }
- else if (event_type == USB_MSC_DEVICE_GET_RECV_BUFF_INFO)
- {
- if (NULL != val)
- {
-#if SD_CARD_APP
- *((uint32_t *)val) = (uint32_t)MSD_RECV_BUFFER_SIZE;
-#elif RAM_DISK_APP
- *((uint32_t *)val) = (uint32_t)DISK_SIZE_NORMAL;
-#endif
- }
- }
-
- return;
-}
-
-/******************************************************************************
- *
- * @name USB_App_Class_Callback
- *
- * @brief This function handles the callback
- *
- * @param pointer :
- * @param event_type : value of the event
- * @param val : gives the configuration value
- *
- * @return None
- *
- *****************************************************************************/
-uint8_t USB_App_Class_Callback
-(uint8_t event_type,
- uint16_t value,
- uint8_t ** data,
- uint32_t* size,
- void* arg
-)
-{
- lba_app_struct_t* lba_data_ptr;
- uint8_t * prevent_removal_ptr;
- device_lba_info_struct_t* device_lba_info_ptr;
- uint8_t error = USB_OK;
-#if SD_CARD_APP && (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_MQX)
- _mqx_uint error_code = MQX_OK;
-#endif
-#if SD_CARD_APP && (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
- sdhc_status_t error_code = kStatus_SDHC_NoError;
-#endif
-
- if (g_disk.read_write_error)
- {
- return USBERR_ERROR;
- }
-
- switch(event_type)
- {
- case USB_DEV_EVENT_DATA_RECEIVED:
- /* Add User defined code -- if required*/
- lba_data_ptr = (lba_app_struct_t*) size;
-#if RAM_DISK_APP
-#elif SD_CARD_APP
- if (lba_data_ptr->size == 0)
- free_write_buffer((uint32_t*)lba_data_ptr->buff_ptr);
- else
- {
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_BM)
- SD_Write_Block(lba_data_ptr);
- free_write_buffer((uint32_t*)lba_data_ptr->buff_ptr);
-#elif (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
-#if MUTILE_BUFFER && (USE_RTOS)
- uint32_t msg[3] = {(uint32_t)lba_data_ptr->buff_ptr, lba_data_ptr->offset, lba_data_ptr->size};
- OS_MsgQ_send(write_msg_handler, (void*)(msg), 0);
-#else
- error_code = SDCARD_DRV_WriteBlocks(&card, lba_data_ptr->buff_ptr, lba_data_ptr->offset >> SDCARD_BLOCK_SIZE_POWER,
- lba_data_ptr->size >> SDCARD_BLOCK_SIZE_POWER);
- free_write_buffer((uint32_t*)lba_data_ptr->buff_ptr);
- if (error_code != kStatus_SDHC_NoError)
- {
- error = USBERR_ERROR;
- g_disk.read_write_error=1;
- USB_PRINTF("Write SD card error, error = 0x%x.\tPlease check recv buff size(must be less than 128 sectors).\r\n", error_code);
- }
-#endif
-
-#else
-#if MUTILE_BUFFER
- uint32_t msg[3] = {(uint32_t)lba_data_ptr->buff_ptr, lba_data_ptr->offset, lba_data_ptr->size};
- OS_MsgQ_send(write_msg_handler, (void*)(msg), 0);
-#else
- error_code = sd_write_device_sectors(g_sdcard_handle, (lba_data_ptr->offset >> SDCARD_BLOCK_SIZE_POWER),
- (lba_data_ptr->size >> SDCARD_BLOCK_SIZE_POWER) , 3, lba_data_ptr->buff_ptr,NULL);
- free_write_buffer((uint32_t*)lba_data_ptr->buff_ptr);
- if (error_code != MQX_OK)
- {
- error = USBERR_ERROR;
- g_disk.read_write_error=1;
- USB_PRINTF("Write SD card error, error = 0x%x.\tPlease check recv buff size(must be less than 128 sectors).\r\n", error_code);
- }
-#endif
-#endif
- }
-#endif
- break;
- case USB_DEV_EVENT_SEND_COMPLETE:
- /* Add User defined code -- if required*/
- lba_data_ptr = (lba_app_struct_t*) size;
- if (lba_data_ptr->size != 0)
- {
- /* read data from mass storage device to driver buffer */
-#if RAM_DISK_APP
- if(data != NULL)
- {
- *data = g_disk.storage_disk + lba_data_ptr->offset;
- }
-#elif SD_CARD_APP
-#endif
- }
- break;
- case USB_MSC_START_STOP_EJECT_MEDIA:
- /* Code to be added by user for starting, stopping or
- ejecting the disk drive. e.g. starting/stopping the motor in
- case of CD/DVD*/
- break;
- case USB_MSC_DEVICE_READ_REQUEST:
- lba_data_ptr = (lba_app_struct_t*) size;
-
-#if RAM_DISK_APP
- if(data != NULL)
- {
- *data = g_disk.storage_disk + lba_data_ptr->offset;
- }
-#elif SD_CARD_APP
- if(data != NULL)
- {
- *data = g_msc_bulk_in_buff;
- }
- lba_data_ptr->buff_ptr = g_msc_bulk_in_buff;
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_BM)
- SD_Read_Block(lba_data_ptr);
-#elif (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
-#if MUTILE_BUFFER && (USE_RTOS)
- OS_Mutex_lock(sdhc_mutex);
-#endif
- error_code = SDCARD_DRV_ReadBlocks(&card, lba_data_ptr->buff_ptr, lba_data_ptr->offset >> SDCARD_BLOCK_SIZE_POWER,
- lba_data_ptr->size >> SDCARD_BLOCK_SIZE_POWER);
-#if MUTILE_BUFFER && (USE_RTOS)
- OS_Mutex_unlock(sdhc_mutex);
-#endif
- if (error_code != kStatus_SDHC_NoError)
- {
- error = USBERR_ERROR;
- g_disk.read_write_error=1;
- USB_PRINTF("Read SD card error, error = 0x%x.\tPlease check send buff size(must be less than 128 sectors).\r\n", error_code);
- }
-#else
-#if MUTILE_BUFFER
- OS_Mutex_lock(sdhc_mutex);
-#endif
- error_code = sd_read_device_sectors(g_sdcard_handle, (lba_data_ptr->offset >> SDCARD_BLOCK_SIZE_POWER),
- (lba_data_ptr->size >> SDCARD_BLOCK_SIZE_POWER) , 3, lba_data_ptr->buff_ptr,NULL);
-#if MUTILE_BUFFER
- OS_Mutex_unlock(sdhc_mutex);
-#endif
- if (error_code != MQX_OK)
- {
- error = USBERR_ERROR;
- g_disk.read_write_error=1;
- USB_PRINTF("Read SD card error, error = 0x%x.\tPlease check send buff size(must be less than 128 sectors).\r\n", error_code);
- }
-#endif
-#endif
- break;
- case USB_MSC_DEVICE_WRITE_REQUEST:
- lba_data_ptr = (lba_app_struct_t*) size;
-#if RAM_DISK_APP
- if(data != NULL)
- {
- *data = g_disk.storage_disk + lba_data_ptr->offset;
- }
-#elif SD_CARD_APP
- if(data != NULL)
- {
- /* get_write_buffer should return NULL when there are no buffers for writing */
- *data = (uint8_t*)get_write_buffer();
- }
-#endif
- break;
- case USB_MSC_DEVICE_FORMAT_COMPLETE:
- break;
- case USB_MSC_DEVICE_REMOVAL_REQUEST:
- prevent_removal_ptr = (uint8_t *) size;
- if (SUPPORT_DISK_LOCKING_MECHANISM)
- {
- g_disk.disk_lock = *prevent_removal_ptr;
- }
- else if ((!SUPPORT_DISK_LOCKING_MECHANISM) && (!(*prevent_removal_ptr)))
- {
- /*there is no support for disk locking and removal of medium is enabled*/
- /* code to be added here for this condition, if required */
- }
- break;
- case USB_MSC_DEVICE_GET_INFO:
- device_lba_info_ptr = (device_lba_info_struct_t*) size;
-#if RAM_DISK_APP
- device_lba_info_ptr->total_lba_device_supports = TOTAL_LOGICAL_ADDRESS_BLOCKS_NORMAL;
- device_lba_info_ptr->length_of_each_lab_of_device = LENGTH_OF_EACH_LAB;
-#elif SD_CARD_APP
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_BM)
- SD_Card_Info(&device_lba_info_ptr->total_lba_device_supports,
- &device_lba_info_ptr->length_of_each_lab_of_device);
-#elif (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
- device_lba_info_ptr->total_lba_device_supports = card.blockCount;
- device_lba_info_ptr->length_of_each_lab_of_device = card.blockSize;
-#else
- sd_get_block_size(g_sdcard_handle, &device_lba_info_ptr->length_of_each_lab_of_device);
- sd_get_blocks_num(g_sdcard_handle, &device_lba_info_ptr->total_lba_device_supports);
-#endif
-#endif
- device_lba_info_ptr->num_lun_supported = LOGICAL_UNIT_SUPPORTED;
- break;
- default:
- break;
- }
-
- return error;
-}
-
-/******************************************************************************
- *
- * @name TestApp_Init
- *
- * @brief This function is the entry for mouse (or other usage)
- *
- * @param None
- *
- * @return None
- **
- *****************************************************************************/
-
-void APP_init(void)
-{
-#if SD_CARD_APP
-
-#if ((OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_BM) || (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK))
- g_msc_bulk_in_buff = (uint8_t*)g_msc_bulk_in_buff_temp;
- g_msc_bulk_out_buff = (uint8_t*)g_msc_bulk_out_buff_temp;
-#elif (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_MQX)
- g_msc_bulk_in_buff = (uint8_t*)OS_Mem_alloc_uncached_align(MSD_SEND_BUFFER_SIZE, 32);
- g_msc_bulk_out_buff = (uint8_t*)OS_Mem_alloc_uncached_align(MSD_RECV_BUFFER_SIZE * MSD_RECV_BUFFER_NUM, 32);
-#endif
-
-#endif
-
-#if SD_CARD_APP
- USB_PRINTF("Please insert SD card\n");
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_BM || OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_SDK)
-#if USE_SDHC_PROTOCOL
- sdhc_detect_io_init();
-#endif
- while (!sdhc_detect())
- {
- ;
- } /* SD Card inserted */
- if(!SD_Init()) return; /* Initialize SD_CARD and SPI Interface */
-#else
- g_sdcard_handle = sd_init();
-
-#endif
- USB_PRINTF("\nSD card inserted!\n");
-
-#endif
- OS_Mem_zero(&g_disk, sizeof(disk_struct_t));
-
- OS_Mem_zero(&g_msd_config, sizeof(msc_config_struct_t));
-
- msc_application_callback.callback = USB_App_Device_Callback;
- msc_application_callback.arg = &g_disk.app_handle;
-
- /* Register the callbacks to lower layers */
- g_msd_config.msc_application_callback = msc_application_callback;
- g_msd_config.vendor_req_callback = vend_req_callback;
- g_msd_config.class_specific_callback.callback = USB_App_Class_Callback;
- g_msd_config.class_specific_callback.arg = &g_disk.app_handle;
- g_msd_config.desc_callback_ptr = &desc_callback;
-
- g_disk.speed = USB_SPEED_FULL;
- /* Finally, Initialize the device and USB Stack layers*/
- USB_Class_MSC_Init(CONTROLLER_ID, &g_msd_config, &g_disk.app_handle);
-
-#if SD_CARD_APP
- write_buffer_msg_handler = OS_MsgQ_create((MSD_RECV_BUFFER_NUM + 1), 1); //msg_size = 4Bytes
- for (int i = 0; i < MSD_RECV_BUFFER_NUM; ++i)
- {
- uint32_t address = (uint32_t)(&g_msc_bulk_out_buff[i * MSD_RECV_BUFFER_SIZE]);
- OS_MsgQ_send(write_buffer_msg_handler, (void*)(&address), 0);
- }
-#endif
-}
-
-void APP_task()
-{
- if (g_disk.read_write_error)
- {
- return;
- }
- Disk_App();
-}
-
-#if (OS_ADAPTER_ACTIVE_OS == OS_ADAPTER_MQX)
-/*FUNCTION*----------------------------------------------------------------
- *
- * Function Name : Main_Task
- * Returned Value : None
- * Comments :
- * First function called. Calls Test_App
- * callback functions.
- *
- *END*--------------------------------------------------------------------*/
-void Main_Task
-(
- uint32_t param
- )
-{
- UNUSED_ARGUMENT (param)
- APP_init();
-#if MUTILE_BUFFER
- /* write sdhc task */
- sdhc_mutex = OS_Mutex_create();
- write_msg_handler = OS_MsgQ_create((MSD_RECV_BUFFER_NUM), 3);/* msg_size = 12Bytes */
- OS_Task_create(write_task, NULL, 8L, 2000L, "write_task", NULL);
-#endif
-}
-#endif
-
-/* EOF */
+/**HEADER********************************************************************
+ *
+ * Copyright (c) 2008, 2013 - 2014 Freescale Semiconductor;
+ * All Rights Reserved
+ *
+ * Copyright (c) 1989-2008 ARC International;
+ * All Rights Reserved
+ *
+ ***************************************************************************
+ *
+ * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ **************************************************************************
+ *
+ * $FileName: disk.c$
+ * $Version :
+ * $Date :
+ *
+ * Comments:
+ *
+ * @brief RAM Disk has been emulated via this Mass Storage Demo
+ *****************************************************************************/
+
+/******************************************************************************
+ * Includes
+ *****************************************************************************/
+#include "usb_device_config.h"
+#include "usb.h"
+#include "usb_device_stack_interface.h"
+#include "disk.h"
+#include "adapter_cfg.h"
+#include "fsl_device_registers.h"
+#include "fsl_clock_manager.h"
+#include "fsl_debug_console.h"
+#include "fsl_port_hal.h"
+
+#if USBCFG_DEV_COMPOSITE
+#error This application requires USBCFG_DEV_COMPOSITE defined zero in usb_device_config.h. Please recompile usbd with this option.
+#endif
+
+#if !USBCFG_DEV_MSC
+#error This application requires USBCFG_DEV_MSC defined none zero in usb_device_config.h. Please recompile usbd with this option.
+#endif
+
+#if HIGH_SPEED
+
+#if !USBCFG_DEV_EHCI
+#error This application requires USBCFG_DEV_EHCI defined none zero in usb_device_config.h. Please recompile usbd with this option.
+#endif
+
+#endif
+
+/****************************************************************************
+ * Global Variables
+ ****************************************************************************/
+/* Add all the variables needed for disk.c to this structure */
+extern usb_desc_request_notify_struct_t desc_callback;
+usb_application_callback_struct_t msc_application_callback;
+usb_vendor_req_callback_struct_t vend_req_callback;
+usb_class_specific_callback_struct_t class_specific_callback;
+
+msc_config_struct_t g_msd_config;
+disk_struct_t g_disk;
+
+/*****************************************************************************
+ * Local Types - None
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Local Functions Prototypes
+ *****************************************************************************/
+void USB_App_Device_Callback(uint8_t event_type, void* val, void* arg);
+uint8_t USB_App_Class_Callback
+(uint8_t event_type,
+ uint16_t value,
+ uint8_t ** data,
+ uint32_t* size,
+ void* arg
+ );
+
+/*****************************************************************************
+ * Local Variables
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Local Functions
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * @name USB_App_Device_Callback
+ *
+ * @brief This function handles the callback
+ *
+ * @param pointer :
+ * @param event_type : value of the event
+ * @param val : gives the configuration value
+ *
+ * @return None
+ *
+ *****************************************************************************/
+void USB_App_Device_Callback(uint8_t event_type, void* val, void* arg)
+{
+ if (event_type == USB_DEV_EVENT_BUS_RESET)
+ {
+ g_disk.start_app = FALSE;
+ if (USB_OK == USB_Class_MSC_Get_Speed(g_disk.app_handle, &g_disk.speed))
+ {
+ USB_Desc_Set_Speed(g_disk.app_handle, g_disk.speed);
+ }
+ }
+ else if (event_type == USB_DEV_EVENT_ENUM_COMPLETE)
+ {
+ g_disk.start_app = TRUE;
+ }
+ else if (event_type == USB_DEV_EVENT_ERROR)
+ {
+ /* add user code for error handling */
+ }
+ else if (event_type == USB_MSC_DEVICE_GET_SEND_BUFF_INFO)
+ {
+ if (NULL != val)
+ {
+ *((uint32_t *)val) = (uint32_t)DISK_SIZE_NORMAL;
+ }
+ }
+ else if (event_type == USB_MSC_DEVICE_GET_RECV_BUFF_INFO)
+ {
+ if (NULL != val)
+ {
+ *((uint32_t *)val) = (uint32_t)DISK_SIZE_NORMAL;
+ }
+ }
+
+ return;
+}
+
+/******************************************************************************
+ *
+ * @name USB_App_Class_Callback
+ *
+ * @brief This function handles the callback
+ *
+ * @param pointer :
+ * @param event_type : value of the event
+ * @param val : gives the configuration value
+ *
+ * @return None
+ *
+ *****************************************************************************/
+uint8_t USB_App_Class_Callback
+(uint8_t event_type,
+ uint16_t value,
+ uint8_t ** data,
+ uint32_t* size,
+ void* arg
+)
+{
+ lba_app_struct_t* lba_data_ptr;
+ uint8_t * prevent_removal_ptr;
+ device_lba_info_struct_t* device_lba_info_ptr;
+ uint8_t error = USB_OK;
+
+ if (g_disk.read_write_error)
+ {
+ return USBERR_ERROR;
+ }
+
+ switch(event_type)
+ {
+ case USB_DEV_EVENT_DATA_RECEIVED:
+ /* Add User defined code -- if required*/
+ lba_data_ptr = (lba_app_struct_t*) size;
+ break;
+ case USB_DEV_EVENT_SEND_COMPLETE:
+ /* Add User defined code -- if required*/
+ lba_data_ptr = (lba_app_struct_t*) size;
+ if (lba_data_ptr->size != 0)
+ {
+ /* read data from mass storage device to driver buffer */
+ if(data != NULL)
+ {
+ *data = g_disk.storage_disk + lba_data_ptr->offset;
+ }
+ }
+ break;
+ case USB_MSC_START_STOP_EJECT_MEDIA:
+ /* Code to be added by user for starting, stopping or
+ ejecting the disk drive. e.g. starting/stopping the motor in
+ case of CD/DVD*/
+ break;
+ case USB_MSC_DEVICE_READ_REQUEST:
+ lba_data_ptr = (lba_app_struct_t*) size;
+
+ if(data != NULL)
+ {
+ *data = g_disk.storage_disk + lba_data_ptr->offset;
+ }
+ break;
+ case USB_MSC_DEVICE_WRITE_REQUEST:
+ lba_data_ptr = (lba_app_struct_t*) size;
+ if(data != NULL)
+ {
+ *data = g_disk.storage_disk + lba_data_ptr->offset;
+ }
+ break;
+ case USB_MSC_DEVICE_FORMAT_COMPLETE:
+ break;
+ case USB_MSC_DEVICE_REMOVAL_REQUEST:
+ prevent_removal_ptr = (uint8_t *) size;
+ if (SUPPORT_DISK_LOCKING_MECHANISM)
+ {
+ g_disk.disk_lock = *prevent_removal_ptr;
+ }
+ else if ((!SUPPORT_DISK_LOCKING_MECHANISM) && (!(*prevent_removal_ptr)))
+ {
+ /*there is no support for disk locking and removal of medium is enabled*/
+ /* code to be added here for this condition, if required */
+ }
+ break;
+ case USB_MSC_DEVICE_GET_INFO:
+ device_lba_info_ptr = (device_lba_info_struct_t*) size;
+ device_lba_info_ptr->total_lba_device_supports = TOTAL_LOGICAL_ADDRESS_BLOCKS_NORMAL;
+ device_lba_info_ptr->length_of_each_lab_of_device = LENGTH_OF_EACH_LAB;
+ device_lba_info_ptr->num_lun_supported = LOGICAL_UNIT_SUPPORTED;
+ break;
+ default:
+ break;
+ }
+
+ return error;
+}
+
+/******************************************************************************
+ *
+ * @name disk_init
+ *
+ * @brief This function is the entry for mouse (or other usage)
+ *
+ * @param None
+ *
+ * @return None
+ **
+ *****************************************************************************/
+
+void disk_init(uint8_t *mem)
+{
+ OS_Mem_zero(&g_disk, sizeof(disk_struct_t));
+
+ OS_Mem_zero(&g_msd_config, sizeof(msc_config_struct_t));
+
+ msc_application_callback.callback = USB_App_Device_Callback;
+ msc_application_callback.arg = &g_disk.app_handle;
+
+ /* Register the callbacks to lower layers */
+ g_msd_config.msc_application_callback = msc_application_callback;
+ g_msd_config.vendor_req_callback = vend_req_callback;
+ g_msd_config.class_specific_callback.callback = USB_App_Class_Callback;
+ g_msd_config.class_specific_callback.arg = &g_disk.app_handle;
+ g_msd_config.desc_callback_ptr = &desc_callback;
+
+ g_disk.speed = USB_SPEED_FULL;
+ g_disk.storage_disk = mem;
+ /* Finally, Initialize the device and USB Stack layers*/
+ USB_Class_MSC_Init(CONTROLLER_ID, &g_msd_config, &g_disk.app_handle);
+}
+
+/* vim: set expandtab ts=4 sw=4: */
diff --git a/laser-tag software/disk.h b/laser-tag software/disk.h
index a8ddb20..eb30314 100644
--- a/laser-tag software/disk.h
+++ b/laser-tag software/disk.h
@@ -51,7 +51,7 @@
/* Length of Each Logical Address Block */
#define LENGTH_OF_EACH_LAB (512)
/* total number of logical blocks present */
- #define TOTAL_LOGICAL_ADDRESS_BLOCKS_NORMAL (4)
+ #define TOTAL_LOGICAL_ADDRESS_BLOCKS_NORMAL (8)
/* Net Disk Size */
#define DISK_SIZE_NORMAL (TOTAL_LOGICAL_ADDRESS_BLOCKS_NORMAL * LENGTH_OF_EACH_LAB)
#endif
@@ -82,9 +82,7 @@ typedef struct _disk_variable_struct
msd_handle_t app_handle;
uint32_t start_app;
uint16_t speed;
-#if RAM_DISK_APP
- uint8_t storage_disk[DISK_SIZE_NORMAL];
-#endif
+ uint8_t *storage_disk;
uint8_t disk_lock;
uint8_t read_write_error;
} disk_struct_t;
@@ -92,9 +90,8 @@ typedef struct _disk_variable_struct
/*****************************************************************************
* Global Functions
*****************************************************************************/
-extern void APP_init(void);
-extern void Disk_App(void);
+void disk_init(uint8_t *mem);
#endif
-/* EOF */
+/* vim: set expandtab ts=4 sw=4: */
diff --git a/laser-tag software/epaper.c b/laser-tag software/epaper.c
index 8bd1dbf..7d0effd 100644
--- a/laser-tag software/epaper.c
+++ b/laser-tag software/epaper.c
@@ -21,7 +21,7 @@ static const gpio_output_pin_user_config_t pinCS = {
};
static const spi_master_user_config_t spiConfig = {
- .bitsPerSec = 20000000, /* 20 MHz, max is 20 MHz */
+ .bitsPerSec = 20000000, /* max is 20 MHz */
.polarity = kSpiClockPolarity_ActiveHigh,
.phase = kSpiClockPhase_FirstEdge,
.direction = kSpiMsbFirst,
@@ -58,7 +58,7 @@ static spi_status_t SPI_Transfer(const uint8_t *tx, uint8_t *rx, size_t count)
if (rc != kStatus_SPI_Success) {
return rc;
}
- int i, timeout = (count + 127) / 128 + 1;
+ int i, timeout = count * 4;
for (i = 0; i < timeout; ++i) {
rc = SPI_DRV_MasterGetTransferStatus(1, NULL);
if (rc == kStatus_SPI_Success) {
@@ -117,7 +117,7 @@ static void EPD_Delay(uint32_t ms)
for (; ms > 0; --ms) {
/* XXX This is really stupid */
volatile int i;
- for (i = 0; i < 306 * 48; ++i);
+ for (i = 0; i < 306 * 12; ++i);
}
}
@@ -204,7 +204,7 @@ static void EPD_frame_repeat(const uint8_t *data, uint8_t fixed_value,
{
/* TODO this needs to repeat for about 630ms */
int i;
- for (i = 0; i < 4; ++i) {
+ for (i = 0; i < 6; ++i) {
EPD_frame(data, fixed_value, stage);
}
}
@@ -213,10 +213,11 @@ int EPD_Draw(const uint8_t *old_image, const uint8_t *new_image)
{
int rc = 0;
- /* Configure DMA channel */
+ /* Configure SPI1 */
SPI_DRV_MasterInit(1, &spiState);
uint32_t calculatedBaudRate;
SPI_DRV_MasterConfigureBus(1, &spiConfig, &calculatedBaudRate);
+ debug_printf("EPD baud rate %u Hz\r\n", calculatedBaudRate);
/* read the COG ID */
uint8_t id = EPD_ReadCogID();
diff --git a/laser-tag software/main.c b/laser-tag software/main.c
index 36a6ab6..becf2ca 100644
--- a/laser-tag software/main.c
+++ b/laser-tag software/main.c
@@ -244,7 +244,7 @@ static flexio_timer_config_t g_timerConfig = {
.timena = kFlexioTimerEnableOnTriggerHigh,
.tstop = kFlexioTimerStopBitDisabled,
.tstart = kFlexioTimerStartBitDisabled,
- .timcmp = (32 * 2 - 1) << 8 | (12 - 1), // 32 bits at 2 MHz
+ .timcmp = (32 * 2 - 1) << 8 | (10 - 1), // 32 bits at 2.4 MHz
};
static flexio_shifter_config_t g_shifterConfig = {
@@ -581,7 +581,7 @@ int main (void)
/* Throw up first image */
int ret = EPD_Draw(NULL, images[current_image]);
- debug_printf("Returned from EPD_Draw %d\r\n", ret);
+ debug_printf("EPD_Draw returned %d\r\n", ret);
if (-1 == ret) {
led(0xff, 0x00, 0x00);
} else if (-2 == ret) {
@@ -593,24 +593,26 @@ int main (void)
}
blank_led = 30;
- ret = 0; //radio_init();
+ ret = radio_init();
+ debug_printf("radio_init returned %d\r\n", ret);
if (0 == ret) {
led(0x22, 0x00, 0x22);
}
/* No good can come of this */
- //APP_init();
+ disk_init(images[2]);
/* We're done, everything else is triggered through interrupts */
for(;;) {
if (cue_next_image) {
int old_image = current_image;
current_image = (current_image + 1) % image_count;
+ debug_printf("drawing %d -> %d\r\n", old_image, current_image);
EPD_Draw(images[old_image], images[current_image]);
cue_next_image = 0;
}
#ifndef DEBUG
- SMC_HAL_SetMode(SMC, &g_idlePowerMode);
+ //SMC_HAL_SetMode(SMC, &g_idlePowerMode);
#endif
}
}
diff --git a/laser-tag software/radio.c b/laser-tag software/radio.c
index 4ee90ff..c78ec76 100644
--- a/laser-tag software/radio.c
+++ b/laser-tag software/radio.c
@@ -1,4 +1,5 @@
#include "radio.h"
+#include "fsl_debug_console.h"
#include "fsl_gpio_driver.h"
#include "fsl_spi_master_driver.h"
#include "RFM69registers.h"
@@ -18,7 +19,7 @@ static const gpio_output_pin_user_config_t pinDIO2 = {
};
static const spi_master_user_config_t spiConfig = {
- .bitsPerSec = 2000000, /* 2 MHz, max is 10 MHz */
+ .bitsPerSec = 10000000, /* max is 10 MHz */
.polarity = kSpiClockPolarity_ActiveHigh,
.phase = kSpiClockPhase_FirstEdge,
.direction = kSpiMsbFirst,
@@ -105,6 +106,15 @@ static const struct {
static spi_master_state_t spiState;
+static void delay(uint32_t ms)
+{
+ for (; ms > 0; --ms) {
+ /* XXX This is really stupid */
+ volatile int i;
+ for (i = 0; i < 306 * 12; ++i);
+ }
+}
+
static spi_status_t SPI_Transfer(const uint8_t *tx, uint8_t *rx, size_t count)
{
spi_status_t rc;
@@ -113,7 +123,7 @@ static spi_status_t SPI_Transfer(const uint8_t *tx, uint8_t *rx, size_t count)
if (rc != kStatus_SPI_Success) {
return rc;
}
- int i, timeout = (count + 127) / 128 + 1;
+ int i, timeout = count * 2;
for (i = 0; i < timeout; ++i) {
rc = SPI_DRV_MasterGetTransferStatus(0, NULL);
if (rc == kStatus_SPI_Success) {
@@ -139,15 +149,6 @@ static void write_reg(uint8_t reg, uint8_t val)
SPI_Transfer(tx, NULL, 2);
}
-static void delay(uint32_t ms)
-{
- for (; ms > 0; --ms) {
- /* XXX This is really stupid */
- volatile int i;
- for (i = 0; i < 306; ++i);
- }
-}
-
int radio_init()
{
PORT_HAL_SetMuxMode(g_portBase[GPIOC_IDX], 4, kPortMuxAlt2);
@@ -162,14 +163,15 @@ int radio_init()
GPIO_DRV_WritePinOutput(pinReset.pinName, 0);
delay(5);
- /* Configure DMA channel */
+ /* Configure SPI0 */
SPI_DRV_MasterInit(0, &spiState);
uint32_t calculatedBaudRate;
SPI_DRV_MasterConfigureBus(0, &spiConfig, &calculatedBaudRate);
+ debug_printf("radio baud rate %u Hz\r\n", calculatedBaudRate);
/* Use REG_SYNCVALUE1 to test that the radio is there */
write_reg(REG_SYNCVALUE1, 0x55);
- uint32_t reg = read_reg(REG_SYNCVALUE1);
+ uint8_t reg = read_reg(REG_SYNCVALUE1);
if (reg != 0x55) {
return -1;
}
diff --git a/laser-tag software/usb_descriptor.c b/laser-tag software/usb_descriptor.c
index 29d7a76..283bcb6 100644
--- a/laser-tag software/usb_descriptor.c
+++ b/laser-tag software/usb_descriptor.c
@@ -101,9 +101,9 @@ uint8_t g_device_descriptor[DEVICE_DESCRIPTOR_SIZE] =
/* Max Packet size */
CONTROL_MAX_PACKET_SIZE,
/* Vendor ID */
- 0xa2, 0x15,
+ 0x37, 0x13,
/* Product ID */
- 0x00, 0x02,
+ 0x41, 0x41,
/* BCD Device version */
0x02, 0x00,
/* Manufacturer string index */
@@ -259,56 +259,28 @@ uint8_t USB_STR_0[USB_STR_0_SIZE + USB_STR_DESC_SIZE] =
uint8_t USB_STR_1[USB_STR_1_SIZE + USB_STR_DESC_SIZE] =
{ sizeof(USB_STR_1),
USB_STRING_DESCRIPTOR,
- 'F', 0,
- 'R', 0,
- 'E', 0,
- 'E', 0,
- 'S', 0,
- 'C', 0,
'A', 0,
- 'L', 0,
- 'E', 0,
- ' ', 0,
- 'S', 0,
- 'E', 0,
- 'M', 0,
- 'I', 0,
- 'C', 0,
- 'O', 0,
- 'N', 0,
- 'D', 0,
- 'U', 0,
- 'C', 0,
- 'T', 0,
- 'O', 0,
- 'R', 0,
- ' ', 0,
- 'I', 0,
- 'N', 0,
- 'C', 0,
- '.', 0
+ 'm', 0,
+ 'a', 0,
+ 't', 0,
+ 'u', 0,
+ 's', 0,
};
/* Product string */
uint8_t USB_STR_2[USB_STR_2_SIZE + USB_STR_DESC_SIZE] =
{ sizeof(USB_STR_2),
USB_STRING_DESCRIPTOR,
- 'M', 0,
- 'Q', 0,
- 'X', 0,
- ' ', 0,
- 'M', 0,
'A', 0,
- 'S', 0,
- 'S', 0,
- ' ', 0,
- 'S', 0,
- 'T', 0,
- 'O', 0,
- 'R', 0,
+ 'H', 0,
'A', 0,
- 'G', 0,
- 'E', 0
+ '!', 0,
+ ' ', 0,
+ 'B', 0,
+ 'a', 0,
+ 'd', 0,
+ 'g', 0,
+ 'e', 0,
};
/* Serial number string */
@@ -816,4 +788,5 @@ usb_desc_request_notify_struct_t desc_callback =
USB_Set_Configuration,
USB_Desc_Get_Entity
};
-/* EOF */
+
+/* vim: set expandtab ts=4 sw=4: */
diff --git a/laser-tag software/usb_descriptor.h b/laser-tag software/usb_descriptor.h
index b3228ce..d99176e 100644
--- a/laser-tag software/usb_descriptor.h
+++ b/laser-tag software/usb_descriptor.h
@@ -141,8 +141,8 @@
/* string descriptors sizes */
#define USB_STR_DESC_SIZE (2)
#define USB_STR_0_SIZE (2)
-#define USB_STR_1_SIZE (56)
-#define USB_STR_2_SIZE (32)
+#define USB_STR_1_SIZE (12)
+#define USB_STR_2_SIZE (20)
#define USB_STR_3_SIZE (32)
#define USB_STR_n_SIZE (32)
@@ -222,4 +222,4 @@ uint8_t USB_Desc_Set_Speed
);
#endif
-/* EOF */
+/* vim: set expandtab ts=4 sw=4: */