tux-droid-svn Mailing List for Tux Droid CE (Page 195)
Status: Beta
Brought to you by:
ks156
You can subscribe to this list here.
2007 |
Jan
|
Feb
(32) |
Mar
(108) |
Apr
(71) |
May
(38) |
Jun
(128) |
Jul
(1) |
Aug
(14) |
Sep
(77) |
Oct
(104) |
Nov
(90) |
Dec
(71) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(81) |
Feb
(18) |
Mar
(40) |
Apr
(102) |
May
(151) |
Jun
(74) |
Jul
(151) |
Aug
(257) |
Sep
(447) |
Oct
(379) |
Nov
(404) |
Dec
(430) |
2009 |
Jan
(173) |
Feb
(236) |
Mar
(519) |
Apr
(300) |
May
(112) |
Jun
(232) |
Jul
(314) |
Aug
(58) |
Sep
(203) |
Oct
(293) |
Nov
(26) |
Dec
(109) |
2010 |
Jan
(19) |
Feb
(25) |
Mar
(33) |
Apr
(1) |
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Paul_R <c2m...@c2...> - 2008-05-15 14:14:49
|
Author: Paul_R Date: 2008-05-15 16:14:49 +0200 (Thu, 15 May 2008) New Revision: 1156 Modified: firmware/fuxusb/trunk/fuxusb.Opt firmware/fuxusb/trunk/src/usb_enum.c Log: * Added a function to send a zero-length packet (send_zlp). Modified: firmware/fuxusb/trunk/fuxusb.Opt =================================================================== (Binary files differ) Modified: firmware/fuxusb/trunk/src/usb_enum.c =================================================================== --- firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 14:03:24 UTC (rev 1155) +++ firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 14:14:49 UTC (rev 1156) @@ -31,19 +31,14 @@ #include "lib_mcu\usb\usb_drv.h" uint8_t usb_configuration_nb = 0; -/*_____ M A C R O S _________________________________________________________*/ - static bit zlp; static uint8_t endpoint_status[3]; static uint8_t hid_idle_duration; static uint8_t *pbuffer; static uint8_t bmRequestType; static uint8_t bRequest; -uint8_t line_coding[7]; -/*_____ D E C L A R A T I O N _______________________________________________*/ - static void usb_get_descriptor(void); static void usb_read_request(void); static void usb_set_address(void); @@ -70,6 +65,7 @@ static void usb_hid_get_idle(void); static void stall_request(void); +static void send_zlp(void); /*F************************************************************************** * NAME: usb_var_init *---------------------------------------------------------------------------- @@ -314,10 +310,8 @@ add = Usb_read_byte(); /* store the LSB of wValue = address */ Usb_clear_rx_setup(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ Usb_set_FADDEN(); - while (!(Usb_tx_complete())); - Usb_clear_tx_complete(); + send_zlp(); Usb_configure_address(add); #ifdef USB_ENUM_DEBUG printf("SET_ADDRESSE %BX",add); @@ -382,9 +376,7 @@ return; } - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while (!Usb_tx_complete()); - Usb_clear_tx_complete(); + send_zlp(); usb_ep_init(); /* endpoints configuration */ Usb_set_CONFG(); @@ -425,9 +417,7 @@ Usb_clear_DIR(); Usb_clear_rx_setup(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while (!Usb_tx_complete()); - Usb_clear_tx_complete(); + send_zlp(); #ifdef USB_ENUM_DEBUG printf("SET_INTERFACE %BX %BX %BX %BX",HAlternateSetting, \ @@ -458,7 +448,7 @@ uint8_t descriptor_type; uint8_t string_type; - zlp = FALSE; /* no zero length packet */ + zlp = False; /* no zero length packet */ string_type = Usb_read_byte(); /* read LSB of wValue */ descriptor_type = Usb_read_byte(); /* read MSB of wValue */ @@ -614,8 +604,8 @@ ((uint8_t *)&wLength)[0] = Usb_read_byte(); if (wLength > data_to_transfer) { - if ((data_to_transfer % EP_CONTROL_LENGTH) == 0) { zlp = TRUE; } - else { zlp = FALSE; } /* no need of zero length packet */ + if ((data_to_transfer % EP_CONTROL_LENGTH) == 0) { zlp = True; } + else { zlp = False; } /* no need of zero length packet */ } else { @@ -658,7 +648,7 @@ return; } - if (zlp == TRUE) + if (zlp == True) { usb_send_ep0_packet(pbuffer, 0); while ((!(Usb_rx_complete())) && (!(Usb_tx_complete()))); @@ -850,10 +840,8 @@ Usb_clear_DIR(); Usb_clear_rx_setup(); + send_zlp(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while (!Usb_tx_complete()); - Usb_clear_tx_complete(); #ifdef USB_ENUM_DEBUG printf("SET CURRENT %BX %BX %BX %BX Answer",LwValue,HwValue,\ LwIndex,HwIndex); @@ -876,10 +864,8 @@ Usb_clear_DIR(); Usb_clear_rx_setup(); + send_zlp(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while (!Usb_tx_complete()); - Usb_clear_tx_complete(); #ifdef USB_ENUM_DEBUG printf("SET MIN %BX %BX %BX %BX Answer",LwValue,HwValue,LwIndex,HwIndex); #endif @@ -898,10 +884,8 @@ Usb_clear_DIR(); Usb_clear_rx_setup(); + send_zlp(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while (!Usb_tx_complete()); - Usb_clear_tx_complete(); #ifdef USB_ENUM_DEBUG printf("SET MAX %BX %BX %BX %BX Answer",LwValue,HwValue,LwIndex,HwIndex); #endif @@ -920,11 +904,8 @@ Usb_clear_DIR(); Usb_clear_rx_setup(); + send_zlp(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while (!Usb_tx_complete()); - Usb_clear_tx_complete(); - #ifdef USB_ENUM_DEBUG printf("SET RES %BX %BX %BX %BX Answer",LwValue,HwValue,LwIndex,HwIndex); #endif @@ -1187,9 +1168,8 @@ while(!Usb_rx_complete() ); Usb_clear_rx(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while(!(Usb_tx_complete())); - Usb_clear_tx_complete(); + + send_zlp(); } @@ -1216,9 +1196,7 @@ hid_idle_duration = Usb_read_byte(); /* wValue contains the duration */ Usb_clear_rx_setup(); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while(!(Usb_tx_complete())); - Usb_clear_tx_complete(); + send_zlp(); } /*F************************************************************************** @@ -1242,10 +1220,9 @@ Usb_clear_rx_setup(); Usb_set_DIR(); Usb_write_byte(hid_idle_duration); - Usb_set_tx_ready(); /* send a ZLP for STATUS phase */ - while(!(Usb_tx_complete())); - Usb_clear_tx_complete(); + send_zlp(); + while (!(Usb_rx_complete())); Usb_clear_rx(); Usb_clear_DIR(); @@ -1258,3 +1235,10 @@ Usb_clear_stall_request(); Usb_clear_stalled(); } + +static void send_zlp(void) +{ + Usb_set_tx_ready(); + while (!(Usb_tx_complete())); + Usb_clear_tx_complete(); +} |
From: Paul_R <c2m...@c2...> - 2008-05-15 14:03:23
|
Author: Paul_R Date: 2008-05-15 16:03:24 +0200 (Thu, 15 May 2008) New Revision: 1155 Modified: firmware/fuxusb/trunk/src/usb_enum.c Log: * Init the Banks variables on usb_var_init Modified: firmware/fuxusb/trunk/src/usb_enum.c =================================================================== --- firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 14:00:00 UTC (rev 1154) +++ firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 14:03:24 UTC (rev 1155) @@ -91,12 +91,11 @@ endpoint_status[1] = 0x00; endpoint_status[2] = 0x00; endpoint_status[3] = 0x00; -// XXX + usb_configuration_nb = 0; - //usb_connected_Flag = FALSE; - //usb_sof_counter = 0; - //CMD_IN_Bank_Nb = 0; - //CMD_OUT_Bank_Nb = 0; + + CMD_IN_Bank_Nb = 0; + CMD_OUT_Bank_Nb = 0; } |
From: Paul_R <c2m...@c2...> - 2008-05-15 14:00:05
|
Author: Paul_R Date: 2008-05-15 16:00:00 +0200 (Thu, 15 May 2008) New Revision: 1154 Modified: firmware/fuxusb/trunk/src/usb_desc.c Log: * Removed a commented part Modified: firmware/fuxusb/trunk/src/usb_desc.c =================================================================== --- firmware/fuxusb/trunk/src/usb_desc.c 2008-05-15 13:58:10 UTC (rev 1153) +++ firmware/fuxusb/trunk/src/usb_desc.c 2008-05-15 14:00:00 UTC (rev 1154) @@ -58,73 +58,7 @@ code struct usb_st_audio_descriptor usb_audio_normal = { sizeof(usb_audio_normal), STRING, AUDIO_NORMAL_NAME }; -/* -code struct -{ - struct usb_st_configuration_descriptor cfg; - //------------------------------------------------------------------------- - // Audio - //------------------------------------------------------------------------- - // Interface 0 :: Audio Control - //------------------------------------------------------------------------- - struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_1; - struct usb_Audio_cs_ACinterface_descriptor SpecificACInterfaceDescriptor; - struct usb_Audio_InputTerminal_descriptor MicInputTerminal1Descriptor; - struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor; - struct usb_Audio_OutputTerminal_descriptor MicOutputTerminal1Descriptor; - struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor; - // Interface 1 :: Audio Stream Microphone - //------------------------------------------------------------------------- - struct usb_Audio_st_ASinterface_descriptor MicStandardAlt0ASInterfaceDescriptor; - struct usb_Audio_st_ASinterface_descriptor MicStandardAlt1ASInterfaceDescriptor; - struct usb_Audio_cs_ASinterface_descriptor MicSpecificASInterfaceDescriptor; - struct usb_Audio_TYPEI_FormatType_descriptor MicFormatTypeDescriptor; - struct usb_Audio_st_endpoint_descriptor MicStandardEndpointDescriptor; - struct usb_Audio_cs_ASendpoint_descriptor MicEndpointDescriptor; - - // Interface 2 :: Audio Stream Speaker - //------------------------------------------------------------------------- - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor; - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor; - struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor; - struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor; - struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor; - struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor; - - //------------------------------------------------------------------------- - // "HID" - //------------------------------------------------------------------------- - // Interface 3 :: Command / Status Interface - //------------------------------------------------------------------------- - struct usb_st_interface_descriptor HIDInterfaceDescriptor; - struct usb_hid_descriptor HIDStandardDescriptor; - struct usb_st_endpoint_descriptor HID_InEndpointDescriptor; - struct usb_st_endpoint_descriptor HID_OutEndpointDescriptor; - -#ifdef TTS_INTERFACE_ENABLED - // Interface 4 :: Audio Control - //------------------------------------------------------------------------- - struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_TTS; - struct usb_Audio_cs_ACinterface_descriptor_NbCol1 SpecificACInterfaceDescriptor_TTS; - struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor_TTS; - struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor_TTS; - - // Interface 5 :: Audio Stream - //------------------------------------------------------------------------- - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor_TTS; - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor_TTS; - struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor_TTS; - struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor_TTS; - struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor_TTS; - struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor_TTS; -#endif - - // Report descriptor - //------------------------------------------------------------------------- - uint8_t rep[SIZE_OF_REPORT]; -} -*/ code struct usb_configuration_s usb_configuration = { { 9, CONFIGURATION, CONF_LENGTH, NB_INTERFACE, CONF_NB, |
From: Paul_R <c2m...@c2...> - 2008-05-15 13:58:18
|
Author: Paul_R Date: 2008-05-15 15:58:10 +0200 (Thu, 15 May 2008) New Revision: 1153 Added: firmware/fuxusb/trunk/src/usb_desc.c firmware/fuxusb/trunk/src/usb_desc.h Modified: firmware/fuxusb/trunk/fuxusb.Opt firmware/fuxusb/trunk/fuxusb.Uv2 firmware/fuxusb/trunk/src/usb_enum.c firmware/fuxusb/trunk/src/usb_enum.h Log: * Moved the descriptor structures to a specific file (usb_desc.[ch]) * Added mime-type "application/octet-stream" on fuxusb.Uv2 and fuxusb.Opt Modified: firmware/fuxusb/trunk/fuxusb.Opt =================================================================== (Binary files differ) Property changes on: firmware/fuxusb/trunk/fuxusb.Opt ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: firmware/fuxusb/trunk/fuxusb.Uv2 =================================================================== (Binary files differ) Property changes on: firmware/fuxusb/trunk/fuxusb.Uv2 ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: firmware/fuxusb/trunk/src/usb_desc.c =================================================================== --- firmware/fuxusb/trunk/src/usb_desc.c (rev 0) +++ firmware/fuxusb/trunk/src/usb_desc.c 2008-05-15 13:58:10 UTC (rev 1153) @@ -0,0 +1,607 @@ +/* + * FUXUSB - Firmware for the USB CPU of tuxdroid + * Copyright (C) 2008 C2ME S.A. <tux...@c2...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* $Id$ */ + +#include "config.h" +#include "usb_desc.h" + + +code struct usb_st_device_descriptor usb_device_descriptor = +{ + sizeof(usb_device_descriptor), DEVICE, USB_SPECIFICATION, DEVICE_CLASS, + DEVICE_SUB_CLASS, DEVICE_PROTOCOL, EP_CONTROL_LENGTH, VENDOR_ID, PRODUCT_ID, + ((uint16_t)RELEASE_NUMBER), MAN_STRING_INDEX, PROD_STRING_INDEX, + SN_STRING_INDEX, NB_CONFIGURATION +}; + +code struct usb_st_manufacturer usb_manufacturer = +{ sizeof(usb_manufacturer), STRING, USB_MANUFACTURER_NAME }; + +code struct usb_st_product usb_product = +{ sizeof(usb_product), STRING, USB_PRODUCT_NAME }; + +code struct usb_st_serial_number usb_serial_number = +{ sizeof(usb_serial_number), STRING, USB_SERIAL_NUMBER }; + +code struct usb_st_language_descriptor usb_language = +{ sizeof(usb_language), STRING, LANGUAGE_ID }; + +code struct usb_st_config usb_config = +{ sizeof(usb_config), STRING, USB_CONFIG_NAME }; + +code struct usb_st_micro_descriptor usb_audio_micro = +{ sizeof(usb_audio_micro), STRING, AUDIO_MICRO_NAME }; + +code struct usb_st_speaker_descriptor usb_audio_speaker = +{ sizeof(usb_audio_speaker), STRING, AUDIO_SPEAKER_NAME }; + +code struct usb_st_tts_descriptor usb_audio_tts = +{ sizeof(usb_audio_tts), STRING, AUDIO_TTS_NAME }; + +code struct usb_st_audio_descriptor usb_audio_normal = +{ sizeof(usb_audio_normal), STRING, AUDIO_NORMAL_NAME }; + +/* +code struct +{ + struct usb_st_configuration_descriptor cfg; + //------------------------------------------------------------------------- + // Audio + //------------------------------------------------------------------------- + // Interface 0 :: Audio Control + //------------------------------------------------------------------------- + struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_1; + struct usb_Audio_cs_ACinterface_descriptor SpecificACInterfaceDescriptor; + struct usb_Audio_InputTerminal_descriptor MicInputTerminal1Descriptor; + struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor; + struct usb_Audio_OutputTerminal_descriptor MicOutputTerminal1Descriptor; + struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor; + + // Interface 1 :: Audio Stream Microphone + //------------------------------------------------------------------------- + struct usb_Audio_st_ASinterface_descriptor MicStandardAlt0ASInterfaceDescriptor; + struct usb_Audio_st_ASinterface_descriptor MicStandardAlt1ASInterfaceDescriptor; + struct usb_Audio_cs_ASinterface_descriptor MicSpecificASInterfaceDescriptor; + struct usb_Audio_TYPEI_FormatType_descriptor MicFormatTypeDescriptor; + struct usb_Audio_st_endpoint_descriptor MicStandardEndpointDescriptor; + struct usb_Audio_cs_ASendpoint_descriptor MicEndpointDescriptor; + + // Interface 2 :: Audio Stream Speaker + //------------------------------------------------------------------------- + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor; + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor; + struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor; + struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor; + struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor; + struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor; + + //------------------------------------------------------------------------- + // "HID" + //------------------------------------------------------------------------- + // Interface 3 :: Command / Status Interface + //------------------------------------------------------------------------- + struct usb_st_interface_descriptor HIDInterfaceDescriptor; + struct usb_hid_descriptor HIDStandardDescriptor; + struct usb_st_endpoint_descriptor HID_InEndpointDescriptor; + struct usb_st_endpoint_descriptor HID_OutEndpointDescriptor; + +#ifdef TTS_INTERFACE_ENABLED + // Interface 4 :: Audio Control + //------------------------------------------------------------------------- + struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_TTS; + struct usb_Audio_cs_ACinterface_descriptor_NbCol1 SpecificACInterfaceDescriptor_TTS; + struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor_TTS; + struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor_TTS; + + // Interface 5 :: Audio Stream + //------------------------------------------------------------------------- + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor_TTS; + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor_TTS; + struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor_TTS; + struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor_TTS; + struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor_TTS; + struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor_TTS; +#endif + + // Report descriptor + //------------------------------------------------------------------------- + uint8_t rep[SIZE_OF_REPORT]; +} +*/ +code struct usb_configuration_s usb_configuration = +{ + { 9, CONFIGURATION, CONF_LENGTH, NB_INTERFACE, CONF_NB, + CONFIG_STRING_INDEX, CONF_ATTRIBUTES, MAX_POWER}, + + //------------------------------------------------------------------------- + // Audio + //------------------------------------------------------------------------- + // Interface 0 :: Audio Control + //------------------------------------------------------------------------- + // StandardACInterfaceDescriptor_1[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x00, // interface number (0) + 0x00, // alternate setting (0) + 0x00, // number of endpoints (0) + 0x01, // interface class AUDIO + 0x01, // interface sub-class AUDIO_CONTROL + 0x00, // interface protocol UNUSED + 0x08 // interface string index UNUSED + }, + + // SpecificACInterfaceDescriptor[] = + //------------------------------------- + { + 0x0A, // length of descriptor (10 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x01, // HEADER subtype + 0x0001, // bcdADC Revision of class specification 1.0 + 0x3400, // wTotal Lenght Total size of class specific descriptors + 0x02, // blnCollection Number of streaming interfaces + 0x01, // baInterfaceNr + 0x02 // baInterfaceNr + }, + + // IT Microphone Part : Hardware + // MicInputTerminal1Descriptor[] = + //------------------------------------- + { + 0x0C, // length of descriptor (12 bytes) + 0x24, // bdescriptor type (CS_INTERFACE) + 0x02, // bdescriptor Subtype INPUT_TERMINAL subtype + 0x01, // bTerminalID ID of this Input Terminal + 0x0102, // Terminal is Microphone + 0x00, // bAssocTerminal No Association + 0x01, // bNrChannels One channel + 0x0000, // wChannelConfig Mono Sets no posistion bits + 0x00, // iChannelNames Unused + 0x06 // iTerminal Unused + }, + + // IT Speaker Part : USB + // SpkInputTerminalDescriptor[] = + //------------------------------------- + { + 0x0C, // length of descriptor (12 bytes) + 0x24, // bdescriptor type (CS_INTERFACE) + 0x02, // bdescriptor Subtype INPUT_TERMINAL subtype + 0x02, // bTerminalID ID of this Input Terminal + 0x0101, // Terminal is USB + 0x00, // bAssocTerminal No Association + 0x01, // bNrChannels One channel + 0x0000, // wChannelConfig Mono Sets no posistion bits + 0x05, // iChannelNames Unused + 0 // iTerminal Unused + }, + + // OT Microphone Part : Software + // MicOutputTerminal1Descriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x03, // bdescriptor subtype OUTPUT_TERMINAL + 0x03, // bTerminalID ID of this Output Terminal + 0x0101, // 0x0101 USB Streaming + 0x00, // bAssocTerminal No association + 0x01, // bSourceID From Input Termianl + 0x06 // iTerminal Unused + }, + + // OT Speaker Part : Software + // SpkOutputTerminalDescriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x03, // bdescriptor subtype OUTPUT_TERMINAL + 0x04, // bTerminalID ID of this Output Terminal + 0x0103, // 0x0301 Speaker + 0x00, // bAssocTerminal No association + 0x02, // bSourceID From Input Termianl + 0x05 // iTerminal Unused + }, + + //------------------------------------------------------------------------- + // Microphone + //------------------------------------------------------------------------- + // Interface 1 :: Audio Stream + //------------------------------------------------------------------------- + // MicStandardAlt0ASInterfaceDescriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x01, // interface number Index of this interface + 0x00, // alternate setting Index of this alternate setting + 0x00, // number of endpoints (0) + 0x01, // interface class AUDIO + 0x02, // interface sub-class AUDIO_STREAMING + 0x00, // interface protocol UNUSED + 0x06 // interface string index UNUSED + }, + + // MicStandardAlt1ASInterfaceDescriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x01, // interface number Index of this interface + 0x01, // alternate setting Index of this alternate setting + 0x01, // number of endpoints (1) + 0x01, // interface class AUDIO + 0x02, // interface sub-class AUDIO_STREAMING + 0x00, // interface protocol UNUSED + 0x06 // interface string index UNUSED + }, + + // MicSpecificASInterfaceDescriptor[] = + //------------------------------------- + { + 0x07, // length of descriptor (7 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x01, // GENERAL + 0x03, // wTerminalLink Unit ID of the Output Terminal + 0x01, // Interface Delay + 0x0200 // wFormatTag PCM8 + }, + + // MicFormatTypeDescriptor[] = + //------------------------------------- + { + 0x0B, // length of descriptor (11 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x02, // descriptor subtype FORMAT TYPE subType + 0x01, // bFormatype FORMAT TYPE I + 0x01, // bNrChannels One Channel + 0x01, // bSubFrameSize 1 Bytes per Audio Subframe + 0x08, // BitResolution 8 bits per Sample + 0x01, // SampleFreqType One Frequency supported + 0x40,0x1F,0x00 // SamFreq 8000Hz + }, + + // MicStandardEndpointDescriptor[] = + //------------------------------------- + { + 0x09, // descriptor length (9 bytes) + 0x05, // descriptor type (ENDPOINT) + IN_ENDPOINT1, // endpoint address (IN endpoint, endpoint 1) + 0x01, // endpoint attributes (Isochronous) + 0x0800, // maximum packet size (8 bytes) + 0x01, // polling interval (1ms) + 0x00, // brefresh + 0x00 // Unused + }, + + // MicEndpointDescriptor[] = + //------------------------------------- + { + 0x07, // descriptor length (7 bytes) + 0x25, // descriptor type (CS_ENDPOINT) + 0x01, // DescriptorSubType GENERAL subtype + 0x00, // bMAttributes bit 7 :: max paket + 0x00, // bLockDelayUnits Unused + 0x0000 // LockDelay + }, + + //------------------------------------------------------------------------- + // Speaker + //------------------------------------------------------------------------- + // Interface 2 :: Audio Stream + //------------------------------------------------------------------------- + + // SpkStandardAlt0ASInterfaceDescriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x02, // interface number Index of this interface + 0x00, // alternate setting Index of this alternate setting + 0x00, // number of endpoints (0) + 0x01, // interface class AUDIO + 0x02, // interface sub-class AUDIO_STREAMING + 0x00, // interface protocol UNUSED + 0x05 // interface string index UNUSED + }, + + // SpkStandardAlt1ASInterfaceDescriptor[] = + //------------------------------------- + + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x02, // interface number Index of this interface + 0x01, // alternate setting Index of this alternate setting + 0x01, // number of endpoints (1) + 0x01, // interface class AUDIO + 0x02, // interface sub-class AUDIO_STREAMING + 0x00, // interface protocol UNUSED + 0x05 // interface string index UNUSED + }, + + // SpkSpecificASInterfaceDescriptor[] = + //------------------------------------- + { + 0x07, // length of descriptor (7 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x01, // GENERAL + 0x02, // wTerminalLink Unit ID of the Output Terminal + 0x01, // Interface Delay + 0x0200 // wFormatTag PCM 8 + }, + + // SpkFormatTypeDescriptor[] = + //------------------------------------- + { + 0x0B, // length of descriptor (11 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x02, // descriptor subtype FORMAT TYPE subType + 0x01, // bFormatype FORMAT TYPE I + 0x01, // bNrChannels One Channel + 0x01, // bSubFrameSize 1 Bytes per Audio Subframe + 0x08, // BitResolution 8 bits per Sample + 0x01, // SampleFreqType One Frequency supported + 0x40,0x1F,0x00 // SamFreq 8000Hz + }, + + // SpkStandardEndpointDescriptor[] = + //------------------------------------- + { + 0x09, // descriptor length (9 bytes) + 0x05, // descriptor type (ENDPOINT) + OUT_ENDPOINT2, // endpoint address (OUT endpoint, endpoint 2) + 0x01, // endpoint attributes (Isochronous) + 0x0800, // maximum packet size (8 bytes) + 0x01, // polling interval (1ms) + 0x00, // brefresh + 0x00 // Unused + }, + + // SpkEndpointDescriptor[] = + //------------------------------------- + { + 0x07, // descriptor length (7 bytes) + 0x25, // descriptor type (CS_ENDPOINT) + 0x01, // DescriptorSubType GENERAL subtype + 0x00, // bMAttributes bit 7 :: max paket + 0x00, // bLockDelayUnits Unused + 0x0000 // LockDelay + }, + + //------------------------------------------------------------------------- + // "HID" LIB USB + //------------------------------------------------------------------------- + // Interface 3 :: Command / Status Interface + //------------------------------------------------------------------------- + { // Interface Descriptor + 0x09, // Descriptor size + 0x04, // Descriptor type (Interface) + 0x03, // Interface number + 0x00, // Alternate setting number + 0x02, // Number of endpoints in this interface + 0x03, // Interface class (HID) + 0x00, // Interface sub-class (vendor-specific) + 0x00, // Interface protocol (vendor-specific) + 0x00 // Interface string index + }, + + { // HID Descriptor + 0x09, // Descriptor size + 0x21, // Descriptor type (HID) + 0x1001, // HID Spec (1.1) + 0x00, // Country code (undef) + 0x01, // Number of subordinate class descriptors + 0x22, // Descriptor type (report) + 0x2200 // Report descriptor size + }, + + { // Endpoint Descriptor + 0x07, // Descriptor size + 0x05, // Descriptor type (Endpoint) + IN_ENDPOINT4, // Endpoint nb and direction + 0x03, // Endpoint type + 0x4000, // Maximum packet size + 0x01 // Polling interval + }, + + { // Endpoint Descriptor + 0x07, // Descriptor size + 0x05, // Descriptor type (Endpoint) + OUT_ENDPOINT5, // Endpoint nb and direction + 0x03, // Endpoint type + 0x4000, // Maximum packet size + 0x01 // Polling interval + }, +#ifdef TTS_INTERFACE_ENABLED + //------------------------------------------------------------------------- + // Audio + //------------------------------------------------------------------------- + // Interface 4 :: Audio Control + //------------------------------------------------------------------------- + // StandardACInterfaceDescriptor_1[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x04, // interface number (4) + 0x00, // alternate setting (0) + 0x00, // number of endpoints (0) + 0x01, // interface class AUDIO + 0x01, // interface sub-class AUDIO_CONTROL + 0x00, // interface protocol UNUSED + 0x07 // interface string index UNUSED + }, + + // SpecificACInterfaceDescriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x01, // HEADER subtype + 0x0001, // bcdADC Revision of class specification 1.0 + 0x1E00, // wTotal Lenght Total size of class specific descriptors + 0x01, // blnCollection Number of streaming interfaces + 0x05 // baInterfaceNr + }, + + // IT Speaker Part : USB + // SpkInputTerminalDescriptor[] = + //------------------------------------- + { + 0x0C, // length of descriptor (12 bytes) + 0x24, // bdescriptor type (CS_INTERFACE) + 0x02, // bdescriptor Subtype INPUT_TERMINAL subtype + 0x07, // bTerminalID ID of this Input Terminal + 0x0101, // Terminal is USB + 0x00, // bAssocTerminal No Association + 0x01, // bNrChannels One channel + 0x0000, // wChannelConfig Mono Sets no posistion bits + 0x00, // iChannelNames Unused + 0x07 // iTerminal Unused + }, + + // OT Speaker Part : Software + // SpkOutputTerminalDescriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x03, // bdescriptor subtype OUTPUT_TERMINAL + 0x08, // bTerminalID ID of this Output Terminal + 0x0103, // 0x0301 Speaker + 0x00, // bAssocTerminal No association + 0x07, // bSourceID From Input Termianl + 0x07 // iTerminal Unused + }, + + //------------------------------------------------------------------------- + // Speaker + //------------------------------------------------------------------------- + // Interface 5 :: Audio Stream + //------------------------------------------------------------------------- + + // SpkStandardAlt0ASInterfaceDescriptor[] = + //------------------------------------- + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x05, // interface number Index of this interface + 0x00, // alternate setting Index of this alternate setting + 0x00, // number of endpoints (0) + 0x01, // interface class AUDIO + 0x02, // interface sub-class AUDIO_STREAMING + 0x00, // interface protocol UNUSED + 0x07 // interface string index UNUSED + }, + + // SpkStandardAlt1ASInterfaceDescriptor[] = + //------------------------------------- + + { + 0x09, // length of descriptor (9 bytes) + 0x04, // descriptor type (INTERFACE) + 0x05, // interface number Index of this interface + 0x01, // alternate setting Index of this alternate setting + 0x01, // number of endpoints (1) + 0x01, // interface class AUDIO + 0x02, // interface sub-class AUDIO_STREAMING + 0x00, // interface protocol UNUSED + 0x07 // interface string index UNUSED + }, + + // SpkSpecificASInterfaceDescriptor[] = + //------------------------------------- + { + 0x07, // length of descriptor (7 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x01, // GENERAL + 0x07, // wTerminalLink Unit ID of the Output Terminal + 0x01, // Interface Delay + 0x0200 // wFormatTag PCM8 + }, + + // SpkFormatTypeDescriptor[] = + //------------------------------------- + { + 0x0B, // length of descriptor (11 bytes) + 0x24, // descriptor type (CS_INTERFACE) + 0x02, // descriptor subtype FORMAT TYPE subType + 0x01, // bFormatype FORMAT TYPE I + 0x01, // bNrChannels One Channel + 0x01, // bSubFrameSize 1 Bytes per Audio Subframe + 0x08, // BitResolution 8 bits per Sample + 0x01, // SampleFreqType One Frequency supported + 0x40,0x1F,0x00 // SamFreq 8000Hz + }, + + // SpkStandardEndpointDescriptor[] = + //------------------------------------- + { + 0x09, // descriptor length (9 bytes) + 0x05, // descriptor type (ENDPOINT) + OUT_ENDPOINT3, // endpoint address (OUT endpoint, endpoint 2) + 0x01, // endpoint attributes (Isochronous) + 0x0800, // maximum packet size (8 bytes) + 0x01, // polling interval (1ms) + 0x00, // brefresh + 0x00 // Unused + }, + + // SpkEndpointDescriptor[] = + //------------------------------------- + { + 0x07, // descriptor length (7 bytes) + 0x25, // descriptor type (CS_ENDPOINT) + 0x01, // DescriptorSubType GENERAL subtype + 0x00, // bMAttributes bit 7 :: max paket + 0x00, // bLockDelayUnits Unused + 0x0000 // LockDelay + }, +#endif + //------------------------------------------------------------------------- + // HID Report descriptor + //------------------------------------------------------------------------- + // This descriptor defines the HID device. + //------------------------------------------------------------------------- + { // Report descriptor + 0x06, 0x00, 0xFF, // Usage page (vendor-defined) + 0x09, 0x01, // Usage (Vendor-defined) + 0xA1, 0x01, // Collection (Application) + + 0x09, 0x03, // Usage (vendor defined) + 0x15, 0x00, // Logical Minimum (0) + 0x26, 0xFF, 0x00, // Logical maximum (255) + 0x95, 0x40, // Report count (64) + 0x75, 0x08, // Report size (8 bits) + 0x81, 0x02, // input (data, variable, absolute) + + 0x09, 0x04, // Usage (vendor defined) + 0x15, 0x00, // Logical Minimum (0) + 0x26, 0xFF, 0x00, // Logical maximum (255) + 0x95, 0x40, // Report count (64) + 0x75, 0x08, // Report size (8 bits) + 0x91, 0x02, // output (data, variable, absolute) + + 0xC0 // End collection + } +}; Property changes on: firmware/fuxusb/trunk/src/usb_desc.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Id Name: svn:eol-style + native Added: firmware/fuxusb/trunk/src/usb_desc.h =================================================================== --- firmware/fuxusb/trunk/src/usb_desc.h (rev 0) +++ firmware/fuxusb/trunk/src/usb_desc.h 2008-05-15 13:58:10 UTC (rev 1153) @@ -0,0 +1,447 @@ +/* + * FUXUSB - Firmware for the USB CPU of tuxdroid + * Copyright (C) 2008 C2ME S.A. <tux...@c2...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* $Id$ */ + +#ifndef _USB_DESC_H_ +#define _USB_DESC_H_ + +#include "config.h" +#include "version.h" + + +/* USB descriptor type */ +#define DEVICE 0x01 +#define CONFIGURATION 0x02 +#define STRING 0x03 +#define INTERFACE 0x04 +#define ENDPOINT 0x05 + +/* Standard features*/ +#define DEVICE_REMOTE_WAKEUP_FEATURE 0x01 +#define ENDPOINT_HALT_FEATURE 0x00 + +/* Device status */ +#define SELF_POWERED 1 + +/* Device state */ +#define ATTACHED 0 +#define POWERED 1 +#define DEFAULT 2 +#define ADDRESSED 3 +#define CONFIGURED 4 +#define SUSPENDED 5 + +#define USB_CONFIG_BUSPOWERED 0x80 +#define USB_CONFIG_SELFPOWERED 0x40 +#define USB_CONFIG_REMOTEWAKEUP 0x20 + +/* Endpoints */ +#define OUT_ENDPOINT1 0x01 +#define OUT_ENDPOINT2 0x02 +#define OUT_ENDPOINT3 0x03 +#define OUT_ENDPOINT4 0x04 +#define OUT_ENDPOINT5 0x05 +#define OUT_ENDPOINT6 0x06 + +#define IN_ENDPOINT1 0x81 +#define IN_ENDPOINT2 0x82 +#define IN_ENDPOINT3 0x83 +#define IN_ENDPOINT4 0x84 +#define IN_ENDPOINT5 0x85 +#define IN_ENDPOINT6 0x86 + +/* Descriptors structures */ +struct Endpoint_information_st +{ + uint16_t fifo_size ; /* size of the endpoint FIFO */ + uint16_t fifo_left ; +}; + +struct USB_request_st +{ + uint8_t bmRequestType; /* Characteristics of the request */ + uint8_t bRequest; /* Specific request */ + uint16_t wValue; /* field that varies according to request */ + uint16_t wIndex; /* field that varies according to request */ + uint16_t wLength; /* Number of bytes to transfer if Data */ +}; + +struct usb_st_device_descriptor +{ + uint8_t bLength; /* Size of this descriptor in bytes */ + uint8_t bDescriptorType; /* DEVICE descriptor type */ + uint16_t bscUSB; /* Binay Coded Decimal Spec. release */ + uint8_t bDeviceClass; /* Class code assigned by the USB */ + uint8_t bDeviceSubClass; /* Sub-class code assigned by the USB */ + uint8_t bDeviceProtocol; /* Protocol code assigned by the USB */ + uint8_t bMaxPacketSize0; /* Max packet size for EP0 */ + uint16_t idVendor; /* Vendor ID. ATMEL = 0x03EB */ + uint16_t idProduct; /* Product ID assigned by the manufacturer */ + uint16_t bcdDevice; /* Device release number */ + uint8_t iManufacturer; /* Index of manu. string descriptor */ + uint8_t iProduct; /* Index of prod. string descriptor */ + uint8_t iSerialNumber; /* Index of S.N. string descriptor */ + uint8_t bNumConfigurations; /* Number of possible configurations */ +}; + +struct usb_st_configuration_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* CONFIGURATION descriptor type */ + uint16_t wTotalLength; /* total length of data returned */ + uint8_t bNumInterfaces; /* number of interfaces for this conf. */ + uint8_t bConfigurationValue; /* value for SetConfiguration resquest */ + uint8_t iConfiguration; /* index of string descriptor */ + uint8_t bmAttibutes; /* Configuration characteristics */ + uint8_t MaxPower; /* maximum power consumption */ +}; + +struct usb_hid_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint16_t bcdHID; /* HID spec. */ + uint8_t bCountryCode; /* Country code value*/ + uint8_t bNumDescriptors; /* Number of reports descriptor */ + uint8_t bDescriptorTypeRep; /* Type of the class-specific descriptor */ + uint16_t wDescriptorLength; /* Size of the report descriptor */ +}; + +struct usb_st_interface_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bInterfaceNumber; /* Number of interface */ + uint8_t bAlternateSetting; /* value to select alternate setting */ + uint8_t bNumEndpoints; /* Number of EP except EP 0 */ + uint8_t bInterfaceClass; /* Class code assigned by the USB */ + uint8_t bInterfaceSubClass; /* Sub-class code assigned by the USB */ + uint8_t bInterfaceProtocol; /* Protocol code assigned by the USB */ + uint8_t iInterface; /* Index of string descriptor */ +}; + +struct usb_st_endpoint_descriptor +{ + uint8_t bLength; /* Size of this descriptor in bytes */ + uint8_t bDescriptorType; /* ENDPOINT descriptor type */ + uint8_t bEndpointAddress; /* Address of the endpoint */ + uint8_t bmAttributes; /* Endpoint's attributes */ + uint16_t wMaxPacketSize; /* Maximum packet size for this EP */ + uint8_t bInterval; /* Interval for polling EP in ms */ +}; + +struct usb_st_manufacturer +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[USB_MN_LENGTH];/* unicode characters */ +}; + +struct usb_st_product +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[USB_PN_LENGTH];/* unicode characters */ +}; + +struct usb_st_serial_number +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[USB_SN_LENGTH];/* unicode characters */ +}; + +struct usb_st_config +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[USB_CONFIG_LENGTH];/* unicode characters */ +}; + +struct usb_st_language_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[USB_CONFIG_LENGTH]; /* language id */ +}; + +struct usb_st_speaker_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[AUDIO_SPEAKER_LENGTH]; /* language id */ +}; + +struct usb_st_micro_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[AUDIO_MICRO_LENGTH]; /* language id */ +}; + +struct usb_st_tts_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[AUDIO_TTS_LENGTH]; /* language id */ +}; + + +struct usb_st_audio_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* STRING descriptor type */ + uint16_t wstring[AUDIO_NORMAL_LENGTH]; /* language id */ +}; + + +/* HID specific */ +struct usb_st_hid_descriptor +{ + uint8_t bLength; /* Size of this descriptor in bytes */ + uint8_t bDescriptorType; /* HID descriptor type */ + uint16_t bscHID; /* Binay Coded Decimal Spec. release */ + uint8_t bCountryCode; /* Hardware target country */ + uint8_t bNumDescriptors; /* Number of HID class descriptors to follow */ + uint8_t bRDescriptorType; /* Report descriptor type */ + uint16_t wDescriptorLength; /* Total length of Report descriptor */ +}; + +/* Audio Class specific */ +struct usb_Audio_st_ACinterface_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bInterfaceNumber; /* Number of interface */ + uint8_t bAlternateSetting; /* value to select alternate setting */ + uint8_t bNumEndpoints; /* Number of EP except EP 0 */ + uint8_t bInterfaceClass; /* Class code assigned by the USB */ + uint8_t bInterfaceSubClass; /* Sub-class code assigned by the USB */ + uint8_t bInterfaceProtocol; /* Protocol code assigned by the USB */ + uint8_t iInterface; /* Index of string descriptor */ +}; + +struct usb_Audio_cs_ACinterface_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* HEADER descriptor subtype.*/ + uint16_t bcdADC; /* Audio Device Class Specification Release Number in Binary-Coded Decimal */ + uint16_t wTotalLength; /* Total number of bytes returned for the class-specific AudioControl interface descriptor */ + uint8_t bInCollection; /* Number of EP except EP 0 */ + uint8_t baInterfaceNr[2]; /* Class code assigned by the USB */ +}; + +struct usb_Audio_cs_ACinterface_descriptor_NbCol1 +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* HEADER descriptor subtype.*/ + uint16_t bcdADC; /* Audio Device Class Specification Release Number in Binary-Coded Decimal */ + uint16_t wTotalLength; /* Total number of bytes returned for the class-specific AudioControl interface descriptor */ + uint8_t bInCollection; /* Number of EP except EP 0 */ + uint8_t baInterfaceNr[1]; /* Class code assigned by the USB */ +}; + +/*_____ U S B I N P U T T E R M I N A L D E S C R I P T O R ___________________________*/ +struct usb_Audio_InputTerminal_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* HEADER descriptor subtype.*/ + uint8_t bTerminalID; /* CConstant characterizing the type of Termina*/ + uint16_t wTerminalType; /* Constant characterizing the type of Terminal.*/ + uint8_t bAssocTerminal; /* ID of the Output Terminal to which this Input Terminal is associated */ + uint8_t bNrChannels; /* Number of logical output channels in the Terminals output audio channel cluster. */ + uint16_t wChannelConfig; /* Describes the spatial location of the logical channels.*/ + uint8_t iChannelNames; /*Index of a string descriptor, describing the name of the first logical channel */ + uint8_t iTerminal; /*Index of a string descriptor, describing the Input Terminal. */ +}; + +/*_____ U S B O U T P U T T E R M I N A L D E S C R I P T O R ___________________________*/ +struct usb_Audio_OutputTerminal_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* HEADER descriptor subtype.*/ + uint8_t bTerminalID; /* CConstant characterizing the type of Termina*/ + uint16_t wTerminalType; /* Constant characterizing the type of Terminal.*/ + uint8_t bAssocTerminal; /* ID of the Output Terminal to which this Input Terminal is associated */ + uint8_t bSourceID; /*ID of the Unit or Terminal to which this Terminal is connected */ + uint8_t iTerminal; /*Index of a string descriptor, describing the Input Terminal. */ +}; + +/*_____ U S B F E A T U R E U N I T D E S C R I P T O R ___________________________*/ +struct usb_Audio_FeatureUnit_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* HEADER descriptor subtype.*/ + uint8_t bUnitID; /* Constant uniquely identifying the Unit within the audio function.*/ + uint8_t bSourceID; /* Constant characterizing the type of Terminal.*/ + uint8_t bControlSize; /* Size in bytes of an element of the bmaControls() array: n*/ + uint8_t bmaControls[2]; /*ID of the Unit or Terminal to which this Terminal is connected */ + uint8_t iFeature; /*Index of a string descriptor, describing this Feature Unit.. */ +}; + +/*_____ U S B S T D AUDIO STREAM I N T E R F A C E D E S C R I P T O R _____________________*/ +struct usb_Audio_st_ASinterface_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bInterfaceNumber; /* Number of interface */ + uint8_t bAlternateSetting; /* value to select alternate setting */ + uint8_t bNumEndpoints; /* Number of EP except EP 0 */ + uint8_t bInterfaceClass; /* Class code assigned by the USB */ + uint8_t bInterfaceSubClass; /* Sub-class code assigned by the USB */ + uint8_t bInterfaceProtocol; /* Protocol code assigned by the USB */ + uint8_t iInterface; /* Index of string descriptor */ +}; + +/*_____ U S B C S AUDIO STREAM I N T E R F A C E D E S C R I P T O R _____________________*/ +struct usb_Audio_cs_ASinterface_descriptor +{ + uint8_t bLength; /* size of this descriptor in bytes */ + uint8_t bDescriptorType; /* INTERFACE descriptor type */ + uint8_t bDescriptorSubtype; /* AS_GENERAL descriptor subtype.*/ + uint8_t bTerminalLink; /* The Terminal ID of the Terminal to which the endpoint of this interface is connected.*/ + uint8_t bDelay; /* Delay (d) introduced by the data path */ + uint16_t wFormatTag; /* Class code assigned by the USB */ +}; + +/*_____ U S B AUDIO ST E N D P O I N T D E S C R I P T O R _______________________*/ +struct usb_Audio_st_endpoint_descriptor +{ + uint8_t bLength; /* Size of this descriptor in bytes */ + uint8_t bDescriptorType; /* ENDPOINT descriptor type */ + uint8_t bEndpointAddress; /* Address of the endpoint */ + uint8_t bmAttributes; /* Endpoint's attributes */ + uint16_t wMaxPacketSize; /* Maximum packet size for this EP */ + uint8_t bInterval; /* Interval for polling EP in ms */ + uint8_t bRefresh; /* Reset to 0.*/ + uint8_t bSynchAddress; /* The address of the endpoint used to communicate synchronization information if required by this endpoint..*/ +}; + +/*_____ U S B AUDIO S T E N D P O I N T D E S C R I P T O R _______________________*/ +struct usb_Audio_cs_ASendpoint_descriptor +{ + uint8_t bLength; /* Size of this descriptor in bytes */ + uint8_t bDescriptorType; /* ENDPOINT descriptor type */ + uint8_t bDescriptorSubtype; /* EP_GENERAL descriptor subtype. */ + uint8_t bmAttributes; /* Endpoint's attributes */ + uint8_t bLockDelayUnits; /*Indicates the units used for the wLockDelay field:*/ + uint16_t wLockDelay; /* Reset to 0.*/ +}; + +/*_____ U S B AUDIO S T E N D P O I N T D E S C R I P T O R _______________________*/ +struct usb_Audio_TYPEI_FormatType_descriptor +{ + uint8_t bLength; /* Size of this descriptor in bytes */ + uint8_t bDescriptorType; /* ENDPOINT descriptor type */ + uint8_t bDescriptorSubtype; /* EP_GENERAL descriptor subtype. */ + uint8_t bFormatType; /* FORMAT_TYPE_I. Constant identifying the Format Type the AudioStreaming interface is using.*/ + uint8_t bNrChannels; /*Indicates the number of physical channels in the audio data stream.:*/ + uint8_t bSubframeSize; /* The number of bytes occupied by one audio subframe. Can be 1, 2, 3 or 4.*/ + uint8_t bBitResolution; /* The number of effectively used bits from the available bits in an audio subframe.*/ + uint8_t bSamFreqType; /*Indicates how the sampling frequency can be programmed */ + uint8_t bSamFreqTbl[3]; /*See sampling frequency tables*/ +}; + +struct usb_configuration_s +{ + struct usb_st_configuration_descriptor cfg; + //------------------------------------------------------------------------- + // Audio + //------------------------------------------------------------------------- + // Interface 0 :: Audio Control + //------------------------------------------------------------------------- + struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_1; + struct usb_Audio_cs_ACinterface_descriptor SpecificACInterfaceDescriptor; + struct usb_Audio_InputTerminal_descriptor MicInputTerminal1Descriptor; + struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor; + struct usb_Audio_OutputTerminal_descriptor MicOutputTerminal1Descriptor; + struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor; + + // Interface 1 :: Audio Stream Microphone + //------------------------------------------------------------------------- + struct usb_Audio_st_ASinterface_descriptor MicStandardAlt0ASInterfaceDescriptor; + struct usb_Audio_st_ASinterface_descriptor MicStandardAlt1ASInterfaceDescriptor; + struct usb_Audio_cs_ASinterface_descriptor MicSpecificASInterfaceDescriptor; + struct usb_Audio_TYPEI_FormatType_descriptor MicFormatTypeDescriptor; + struct usb_Audio_st_endpoint_descriptor MicStandardEndpointDescriptor; + struct usb_Audio_cs_ASendpoint_descriptor MicEndpointDescriptor; + + // Interface 2 :: Audio Stream Speaker + //------------------------------------------------------------------------- + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor; + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor; + struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor; + struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor; + struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor; + struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor; + + //------------------------------------------------------------------------- + // "HID" + //------------------------------------------------------------------------- + // Interface 3 :: Command / Status Interface + //------------------------------------------------------------------------- + struct usb_st_interface_descriptor HIDInterfaceDescriptor; + struct usb_hid_descriptor HIDStandardDescriptor; + struct usb_st_endpoint_descriptor HID_InEndpointDescriptor; + struct usb_st_endpoint_descriptor HID_OutEndpointDescriptor; + +#ifdef TTS_INTERFACE_ENABLED + // Interface 4 :: Audio Control + //------------------------------------------------------------------------- + struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_TTS; + struct usb_Audio_cs_ACinterface_descriptor_NbCol1 SpecificACInterfaceDescriptor_TTS; + struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor_TTS; + struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor_TTS; + + // Interface 5 :: Audio Stream + //------------------------------------------------------------------------- + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor_TTS; + struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor_TTS; + struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor_TTS; + struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor_TTS; + struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor_TTS; + struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor_TTS; +#endif + + // Report descriptor + //------------------------------------------------------------------------- + uint8_t rep[SIZE_OF_REPORT]; +}; + + +extern code struct usb_st_device_descriptor usb_device_descriptor; +extern code struct usb_configuration_s usb_configuration; + +extern code struct usb_st_manufacturer usb_manufacturer; +extern code struct usb_st_product usb_product; +extern code struct usb_st_serial_number usb_serial_number; +extern code struct usb_st_language_descriptor usb_language; +extern code struct usb_st_config usb_config; +extern code struct usb_st_micro_descriptor usb_audio_micro; +extern code struct usb_st_speaker_descriptor usb_audio_speaker; +extern code struct usb_st_tts_descriptor usb_audio_tts; +extern code struct usb_st_audio_descriptor usb_audio_normal; + +#endif // _USB_DESC_H_ Property changes on: firmware/fuxusb/trunk/src/usb_desc.h ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Id Name: svn:eol-style + native Modified: firmware/fuxusb/trunk/src/usb_enum.c =================================================================== --- firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 13:15:44 UTC (rev 1152) +++ firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 13:58:10 UTC (rev 1153) @@ -23,6 +23,7 @@ #include "global.h" #include "version.h" #include "usb_enum.h" +#include "usb_desc.h" #include "usb_ep.h" #include "spi_task.h" #include "fifo_stt.h" @@ -33,590 +34,6 @@ /*_____ M A C R O S _________________________________________________________*/ -/*_____ D E F I N I T I O N _________________________________________________*/ - - -code struct usb_st_device_descriptor usb_device_descriptor = -{ - sizeof(usb_device_descriptor), DEVICE, USB_SPECIFICATION, DEVICE_CLASS, - DEVICE_SUB_CLASS, DEVICE_PROTOCOL, EP_CONTROL_LENGTH, VENDOR_ID, PRODUCT_ID, - ((uint16_t)RELEASE_NUMBER), MAN_STRING_INDEX, PROD_STRING_INDEX, - SN_STRING_INDEX, NB_CONFIGURATION -}; - -code struct usb_st_manufacturer usb_manufacturer = -{ sizeof(usb_manufacturer), STRING, USB_MANUFACTURER_NAME }; - -code struct usb_st_product usb_product = -{ sizeof(usb_product), STRING, USB_PRODUCT_NAME }; - -code struct usb_st_serial_number usb_serial_number = -{ sizeof(usb_serial_number), STRING, USB_SERIAL_NUMBER }; - -code struct usb_st_language_descriptor usb_language = -{ sizeof(usb_language), STRING, LANGUAGE_ID }; - -code struct usb_st_config usb_config = -{ sizeof(usb_config), STRING, USB_CONFIG_NAME }; - -code struct usb_st_micro_descriptor usb_audio_micro = -{ sizeof(usb_audio_micro), STRING, AUDIO_MICRO_NAME }; - -code struct usb_st_speaker_descriptor usb_audio_speaker = -{ sizeof(usb_audio_speaker), STRING, AUDIO_SPEAKER_NAME }; - -code struct usb_st_tts_descriptor usb_audio_tts = -{ sizeof(usb_audio_tts), STRING, AUDIO_TTS_NAME }; - -code struct usb_st_audio_descriptor usb_audio_normal = -{ sizeof(usb_audio_normal), STRING, AUDIO_NORMAL_NAME }; - - -code struct -{ struct usb_st_configuration_descriptor cfg; - //------------------------------------------------------------------------- - // Audio - //------------------------------------------------------------------------- - // Interface 0 :: Audio Control - //------------------------------------------------------------------------- - struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_1; - struct usb_Audio_cs_ACinterface_descriptor SpecificACInterfaceDescriptor; - struct usb_Audio_InputTerminal_descriptor MicInputTerminal1Descriptor; - struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor; - struct usb_Audio_OutputTerminal_descriptor MicOutputTerminal1Descriptor; - struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor; - - // Interface 1 :: Audio Stream Microphone - //------------------------------------------------------------------------- - struct usb_Audio_st_ASinterface_descriptor MicStandardAlt0ASInterfaceDescriptor; - struct usb_Audio_st_ASinterface_descriptor MicStandardAlt1ASInterfaceDescriptor; - struct usb_Audio_cs_ASinterface_descriptor MicSpecificASInterfaceDescriptor; - struct usb_Audio_TYPEI_FormatType_descriptor MicFormatTypeDescriptor; - struct usb_Audio_st_endpoint_descriptor MicStandardEndpointDescriptor; - struct usb_Audio_cs_ASendpoint_descriptor MicEndpointDescriptor; - - // Interface 2 :: Audio Stream Speaker - //------------------------------------------------------------------------- - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor; - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor; - struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor; - struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor; - struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor; - struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor; - - //------------------------------------------------------------------------- - // "HID" - //------------------------------------------------------------------------- - // Interface 3 :: Command / Status Interface - //------------------------------------------------------------------------- - struct usb_st_interface_descriptor HIDInterfaceDescriptor; - struct usb_hid_descriptor HIDStandardDescriptor; - struct usb_st_endpoint_descriptor HID_InEndpointDescriptor; - struct usb_st_endpoint_descriptor HID_OutEndpointDescriptor; - -#ifdef TTS_INTERFACE_ENABLED - // Interface 4 :: Audio Control - //------------------------------------------------------------------------- - struct usb_Audio_st_ACinterface_descriptor StandardACInterfaceDescriptor_TTS; - struct usb_Audio_cs_ACinterface_descriptor_NbCol1 SpecificACInterfaceDescriptor_TTS; - struct usb_Audio_InputTerminal_descriptor SpkInputTerminalDescriptor_TTS; - struct usb_Audio_OutputTerminal_descriptor SpkOutputTerminalDescriptor_TTS; - - // Interface 5 :: Audio Stream - //------------------------------------------------------------------------- - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt0ASInterfaceDescriptor_TTS; - struct usb_Audio_st_ASinterface_descriptor SpkStandardAlt1ASInterfaceDescriptor_TTS; - struct usb_Audio_cs_ASinterface_descriptor SpkSpecificASInterfaceDescriptor_TTS; - struct usb_Audio_TYPEI_FormatType_descriptor SpkFormatTypeDescriptor_TTS; - struct usb_Audio_st_endpoint_descriptor SpkStandardEndpointDescriptor_TTS; - struct usb_Audio_cs_ASendpoint_descriptor SpkEndpointDescriptor_TTS; -#endif - - // Report descriptor - //------------------------------------------------------------------------- - uint8_t rep[SIZE_OF_REPORT]; -} -usb_configuration = -{ - { 9, CONFIGURATION, CONF_LENGTH, NB_INTERFACE, CONF_NB, - CONFIG_STRING_INDEX, CONF_ATTRIBUTES, MAX_POWER}, - - //------------------------------------------------------------------------- - // Audio - //------------------------------------------------------------------------- - // Interface 0 :: Audio Control - //------------------------------------------------------------------------- - // StandardACInterfaceDescriptor_1[] = - //------------------------------------- - { - 0x09, // length of descriptor (9 bytes) - 0x04, // descriptor type (INTERFACE) - 0x00, // interface number (0) - 0x00, // alternate setting (0) - 0x00, // number of endpoints (0) - 0x01, // interface class AUDIO - 0x01, // interface sub-class AUDIO_CONTROL - 0x00, // interface protocol UNUSED - 0x08 // interface string index UNUSED - }, - - // SpecificACInterfaceDescriptor[] = - //------------------------------------- - { - 0x0A, // length of descriptor (10 bytes) - 0x24, // descriptor type (CS_INTERFACE) - 0x01, // HEADER subtype - 0x0001, // bcdADC Revision of class specification 1.0 - 0x3400, // wTotal Lenght Total size of class specific descriptors - 0x02, // blnCollection Number of streaming interfaces - 0x01, // baInterfaceNr - 0x02 // baInterfaceNr - }, - - // IT Microphone Part : Hardware - // MicInputTerminal1Descriptor[] = - //------------------------------------- - { - 0x0C, // length of descriptor (12 bytes) - 0x24, // bdescriptor type (CS_INTERFACE) - 0x02, // bdescriptor Subtype INPUT_TERMINAL subtype - 0x01, // bTerminalID ID of this Input Terminal - 0x0102, // Terminal is Microphone - 0x00, // bAssocTerminal No Association - 0x01, // bNrChannels One channel - 0x0000, // wChannelConfig Mono Sets no posistion bits - 0x00, // iChannelNames Unused - 0x06 // iTerminal Unused - }, - - // IT Speaker Part : USB - // SpkInputTerminalDescriptor[] = - //------------------------------------- - { - 0x0C, // length of descriptor (12 bytes) - 0x24, // bdescriptor type (CS_INTERFACE) - 0x02, // bdescriptor Subtype INPUT_TERMINAL subtype - 0x02, // bTerminalID ID of this Input Terminal - 0x0101, // Terminal is USB - 0x00, // bAssocTerminal No Association - 0x01, // bNrChannels One channel - 0x0000, // wChannelConfig Mono Sets no posistion bits - 0x05, // iChannelNames Unused - 0 // iTerminal Unused - }, - - // OT Microphone Part : Software - // MicOutputTerminal1Descriptor[] = - //------------------------------------- - { - 0x09, // length of descriptor (9 bytes) - 0x24, // descriptor type (CS_INTERFACE) - 0x03, // bdescriptor subtype OUTPUT_TERMINAL - 0x03, // bTerminalID ID of this Output Terminal - 0x0101, // 0x0101 USB Streaming - 0x00, // bAssocTerminal No association - 0x01, // bSourceID From Input Termianl - 0x06 // iTerminal Unused - }, - - // OT Speaker Part : Software - // SpkOutputTerminalDescriptor[] = - //------------------------------------- - { - 0x09, // length of descriptor (9 bytes) - 0x24, // descriptor type (CS_INTERFACE) - 0x03, // bdescriptor subtype OUTPUT_TERMINAL - 0x04, // bTerminalID ID of this Output Terminal - 0x0103, // 0x0301 Speaker - 0x00, // bAssocTerminal No association - 0x02, // bSourceID From Input Termianl - 0x05 // iTerminal Unused - }, - - //------------------------------------------------------------------------- - // Microphone - //------------------------------------------------------------------------- - // Interface 1 :: Audio Stream - //------------------------------------------------------------------------- - // MicStandardAlt0ASInterfaceDescriptor[] = - //------------------------------------- - { - 0x09, // length of descriptor (9 bytes) - 0x04, // descriptor type (INTERFACE) - 0x01, // interface number Index of this interface - 0x00, // alternate setting Index of this alternate setting - 0x00, // number of endpoints (0) - 0x01, // interface class AUDIO - 0x02, // interface sub-class AUDIO_STREAMING - 0x00, // interface protocol UNUSED - 0x06 // interface string index UNUSED - }, - - // MicStandardAlt1ASInterfaceDescriptor[] = - //------------------------------------- - { - 0x09, // length of descriptor (9 bytes) - 0x04, // descriptor type (INTERFACE) - 0x01, // interface number Index of this interface - 0x01, // alternate setting Index of this alternate setting - 0x01, // number of endpoints (1) - 0x01, // interface class AUDIO - 0x02, // interface sub-class AUDIO_STREAMING - 0x00, // interface protocol UNUSED - 0x06 // interface string index UNUSED - }, - - // MicSpecificASInterfaceDescriptor[] = - //------------------------------------- - { - 0x07, // length of descriptor (7 bytes) - 0x24, // descriptor type (CS_INTERFACE) - ... [truncated message content] |
From: Paul_R <c2m...@c2...> - 2008-05-15 13:15:53
|
Author: Paul_R Date: 2008-05-15 15:15:44 +0200 (Thu, 15 May 2008) New Revision: 1152 Modified: firmware/fuxusb/trunk/src/usb_enum.c Log: * Created a function stall_request to replace each inline requests. Modified: firmware/fuxusb/trunk/src/usb_enum.c =================================================================== --- firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 08:57:03 UTC (rev 1151) +++ firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 13:15:44 UTC (rev 1152) @@ -23,6 +23,7 @@ #include "global.h" #include "version.h" #include "usb_enum.h" +#include "usb_ep.h" #include "spi_task.h" #include "fifo_stt.h" @@ -651,6 +652,7 @@ static void usb_hid_set_idle(void); static void usb_hid_get_idle(void); +static void stall_request(void); /*F************************************************************************** * NAME: usb_var_init *---------------------------------------------------------------------------- @@ -816,10 +818,7 @@ printf("Unknown Request "); #endif Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!Usb_stall_sent()); - Usb_clear_stall_request(); - Usb_clear_stalled(); + stall_request(); break; } } @@ -854,10 +853,7 @@ printf("Unknown Request "); #endif Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!Usb_stall_sent()); - Usb_clear_stall_request(); - Usb_clear_stalled(); + stall_request(); break; } @@ -868,10 +864,7 @@ printf("Unknown Request "); #endif Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!Usb_stall_sent()); - Usb_clear_stall_request(); - Usb_clear_stalled(); + stall_request(); } #ifdef USB_ENUM_DEBUG @@ -969,10 +962,7 @@ } else { - Usb_set_stall_request(); - while (!Usb_stall_sent()); - Usb_clear_stall_request(); - Usb_clear_stalled(); + stall_request(); return; } @@ -1180,10 +1170,7 @@ printf("UNKNOWN_STRING_INDEX "); #endif Usb_clear_rx_setup(); - Usb_set_stall_request(); - while ((!(Usb_stall_sent())) && (Usb_setup_received())); - Usb_clear_stalled(); - Usb_clear_stall_request(); + stall_request(); Usb_clear_DIR(); return; } @@ -1196,10 +1183,7 @@ printf("UNKNOWN"); #endif Usb_clear_rx_setup(); - Usb_set_stall_request(); - while ((!(Usb_stall_sent())) && (Usb_setup_received())); - Usb_clear_stalled(); - Usb_clear_stall_request(); + stall_request(); Usb_clear_DIR(); #ifdef USB_ENUM_DEBUG printf("1"); @@ -1583,10 +1567,7 @@ { Usb_clear_rx_setup(); Usb_set_DIR(); - Usb_set_stall_request(); - while (!Usb_stall_sent()); - Usb_clear_stall_request(); - Usb_clear_stalled(); + stall_request(); Usb_clear_DIR(); } @@ -1663,16 +1644,12 @@ if (bmRequestType == ZERO_TYPE) { Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!(Usb_stall_sent())); - Usb_clear_stall_request(); + stall_request(); } if (bmRequestType == INTERFACE_TYPE) { Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!(Usb_stall_sent())); - Usb_clear_stall_request(); + stall_request(); } if (bmRequestType == ENDPOINT_TYPE) { @@ -1696,10 +1673,7 @@ default: { Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!(Usb_stall_sent())); - Usb_clear_stall_request(); - Usb_clear_stalled(); + stall_request(); break; } } @@ -1729,16 +1703,12 @@ if (bmRequestType == ZERO_TYPE) { Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!(Usb_stall_sent())); - Usb_clear_stall_request(); + stall_request(); } if (bmRequestType == INTERFACE_TYPE) { Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!(Usb_stall_sent())); - Usb_clear_stall_request(); + stall_request(); } if (bmRequestType == ENDPOINT_TYPE) { @@ -1771,9 +1741,7 @@ default: { Usb_clear_rx_setup(); - Usb_set_stall_request(); - while (!(Usb_stall_sent())); - Usb_clear_stall_request(); + stall_request(); break; } } @@ -1867,3 +1835,10 @@ Usb_clear_DIR(); } +static void stall_request(void) +{ + Usb_set_stall_request(); + while (!(Usb_stall_sent())); + Usb_clear_stall_request(); + Usb_clear_stalled(); +} |
From: Paul_R <c2m...@c2...> - 2008-05-15 08:57:18
|
Author: Paul_R Date: 2008-05-15 10:57:03 +0200 (Thu, 15 May 2008) New Revision: 1151 Modified: firmware/fuxusb/trunk/fuxusb.Opt firmware/fuxusb/trunk/src/bootloader.c firmware/fuxusb/trunk/src/bootloader.h firmware/fuxusb/trunk/src/fifo_spk.c firmware/fuxusb/trunk/src/global.h firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.c firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.h firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.c firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.h firmware/fuxusb/trunk/src/lib_mcu/uart/tools/c51_bdr.c firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.c firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.h firmware/fuxusb/trunk/src/main.c firmware/fuxusb/trunk/src/misc.c firmware/fuxusb/trunk/src/misc.h firmware/fuxusb/trunk/src/spi_lib.c firmware/fuxusb/trunk/src/spi_lib.h firmware/fuxusb/trunk/src/spi_task.c firmware/fuxusb/trunk/src/spi_task.h firmware/fuxusb/trunk/src/usb_commands.c firmware/fuxusb/trunk/src/usb_commands.h firmware/fuxusb/trunk/src/usb_enum.c firmware/fuxusb/trunk/src/usb_enum.h firmware/fuxusb/trunk/src/usb_ep.c firmware/fuxusb/trunk/src/usb_ep.h firmware/fuxusb/trunk/src/usb_misc.c firmware/fuxusb/trunk/src/usb_misc.h firmware/fuxusb/trunk/src/usb_task.c Log: * Replaced all Uchar/Uint16 and unsigned XXX by uint8_t and uint16_t. * Reorganised some definitions. Modified: firmware/fuxusb/trunk/fuxusb.Opt =================================================================== --- firmware/fuxusb/trunk/fuxusb.Opt 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/fuxusb.Opt 2008-05-15 08:57:03 UTC (rev 1151) @@ -15,30 +15,39 @@ GRPOPT 2,(mcu),0,0,0 GRPOPT 3,(headers),1,0,0 -OPTFFF 1,1,1,603979776,0,21,21,0,<.\src\main.c><main.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,92,4,0,0,61,1,0,0 } -OPTFFF 1,2,1,218103808,0,0,0,0,<.\src\global.c><global.c> +OPTFFF 1,1,1,0,0,0,0,0,<.\src\main.c><main.c> +OPTFFF 1,2,1,0,0,0,0,0,<.\src\global.c><global.c> OPTFFF 1,3,1,0,0,0,0,0,<.\src\usb_task.c><usb_task.c> -OPTFFF 1,4,1,67108864,0,0,0,0,<.\src\usb_enum.c><usb_enum.c> -OPTFFF 1,5,1,0,0,25,25,0,<.\src\usb_ep.c><usb_ep.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,104,3,0,0,250,0,0,0 } -OPTFFF 1,6,1,0,0,82,99,0,<.\src\usb_commands.c><usb_commands.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,114,4,0,0,83,1,0,0 } -OPTFFF 1,7,1,318767104,0,0,0,0,<.\src\usb_misc.c><usb_misc.c> -OPTFFF 1,8,1,335544320,0,0,0,0,<.\src\spi_task.c><spi_task.c> -OPTFFF 1,9,1,1862270976,0,69,76,0,<.\src\bootloader.c><bootloader.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,136,4,0,0,105,1,0,0 } +OPTFFF 1,4,1,201326592,0,1603,1612,0,<.\src\usb_enum.c><usb_enum.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,66,0,0,0,66,0,0,0,146,3,0,0,78,1,0,0 } +OPTFFF 1,5,1,0,0,0,0,0,<.\src\usb_ep.c><usb_ep.c> +OPTFFF 1,6,1,301989888,0,0,0,0,<.\src\usb_commands.c><usb_commands.c> +OPTFFF 1,7,1,335544320,0,0,0,0,<.\src\usb_misc.c><usb_misc.c> +OPTFFF 1,8,1,318767104,0,0,0,0,<.\src\spi_task.c><spi_task.c> +OPTFFF 1,9,1,251658240,0,267,276,0,<.\src\bootloader.c><bootloader.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,88,0,0,0,88,0,0,0,168,3,0,0,100,1,0,0 } OPTFFF 1,10,1,553648128,0,0,0,0,<.\src\i2c.c><i2c.c> -OPTFFF 1,11,1,721420288,0,0,0,0,<.\src\fifo_spk.c><fifo_spk.c> +OPTFFF 1,11,1,0,0,57,67,0,<.\src\fifo_spk.c><fifo_spk.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,110,0,0,0,110,0,0,0,190,3,0,0,122,1,0,0 } OPTFFF 1,12,1,0,0,0,0,0,<.\src\fifo_mic.c><fifo_mic.c> OPTFFF 1,13,1,0,0,0,0,0,<.\src\fifo_stt.c><fifo_stt.c> OPTFFF 1,14,1,637534208,0,0,0,0,<.\src\rf.c><rf.c> -OPTFFF 1,15,1,251658240,0,0,0,0,<.\src\misc.c><misc.c> -OPTFFF 2,16,1,0,0,0,0,0,<.\src\lib_mcu\usb\usb_drv.c><usb_drv.c> +OPTFFF 1,15,1,318767105,0,15,21,0,<.\src\misc.c><misc.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,88,0,0,0,88,0,0,0,164,3,0,0,96,1,0,0 } +OPTFFF 2,16,1,0,0,387,397,0,<.\src\lib_mcu\usb\usb_drv.c><usb_drv.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,110,0,0,0,110,0,0,0,190,3,0,0,122,1,0,0 } OPTFFF 2,17,1,0,0,0,0,0,<.\src\lib_mcu\uart\uart_lib.c><uart_lib.c> -OPTFFF 2,18,1,167772160,0,0,0,0,<.\src\spi_lib.c><spi_lib.c> -OPTFFF 2,19,1,234881024,0,0,0,0,<.\src\lib_mcu\fa-usb\flash_api.c><flash_api.c> -OPTFFF 3,20,5,33554434,0,29,37,0,<.\src\config.h><config.h> { 44,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,66,0,0,0,66,0,0,0,158,4,0,0,127,1,0,0 } +OPTFFF 2,18,1,486539264,0,38,47,0,<.\src\spi_lib.c><spi_lib.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,66,0,0,0,66,0,0,0,146,3,0,0,78,1,0,0 } +OPTFFF 2,19,1,301989888,0,211,220,0,<.\src\lib_mcu\fa-usb\flash_api.c><flash_api.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,80,3,0,0,12,1,0,0 } +OPTFFF 3,20,5,33554432,0,0,0,0,<.\src\config.h><config.h> OPTFFF 3,21,5,0,0,0,0,0,<.\src\version.h><version.h> -ExtF <.\src\config.h> 31,48,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } -ExtF <.\src\usb_commands.h> 34,41,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,124,3,0,0,222,0,0,0 } +ExtF <.\SRC\COMMON\defines.h> 47,47,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,110,0,0,0,110,0,0,0,190,3,0,0,122,1,0,0 } +ExtF <.\SRC\misc.h> 1,1,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,132,0,0,0,132,0,0,0,212,3,0,0,144,1,0,0 } +ExtF <.\SRC\COMMON\api.h> 27,27,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,80,3,0,0,12,1,0,0 } +ExtF <.\SRC\global.h> 17,25,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,102,3,0,0,34,1,0,0 } +ExtF <.\SRC\LIB_MCU\compiler.h> 14,27,0,{ 44,0,0,0,0,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,56,1,0,0 } +ExtF <.\src\stdint.h> 22,31,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,132,0,0,0,132,0,0,0,212,3,0,0,144,1,0,0 } +ExtF <.\src\lib_mcu\uart\tools\c51_bdr.c> 51,60,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,80,3,0,0,12,1,0,0 } +ExtF <.\src\lib_mcu\spi\spi_lib.h> 11,11,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,56,1,0,0 } +ExtF <.\src\spi_lib.h> 1,1,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,88,0,0,0,88,0,0,0,168,3,0,0,100,1,0,0 } +ExtF <.\src\lib_mcu\usb\usb_drv.h> 283,283,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,132,0,0,0,132,0,0,0,212,3,0,0,144,1,0,0 } +ExtF <.\src\lib_mcu\fa-usb\flash_api.h> 208,208,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,102,3,0,0,34,1,0,0 } TARGOPT 1, (fuxusb) CLK51=32000000 Modified: firmware/fuxusb/trunk/src/bootloader.c =================================================================== --- firmware/fuxusb/trunk/src/bootloader.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/bootloader.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -30,17 +30,13 @@ #include "fifo_stt.h" #include "lib_mcu\usb\usb_drv.h" -static void bl_init(void); -static void bl_exit(void); -static void bl_fill_page(void); -static void init_bootloader(void); -static void bl_senddata(blHeader_t blHeader, uint8_t dataLength); +/* Externs defs */ bit i2c_bootloading_Flag; -bit bl_send_acknoledge; + +/* Statics defs */ bit i2c_task_on_Flag; - uint8_t page_size; uint8_t packets_per_page; uint8_t address_idx; @@ -48,6 +44,13 @@ uint16_t address_tracking; blHeader_t blHeader; +static void bl_init(void); +static void bl_exit(void); +static void bl_fill_page(void); +static void init_bootloader(void); +static void bl_senddata(blHeader_t blHeader, uint8_t dataLength); + + void bootloader_cmd_parser(void) { /* Disable spi_task */ @@ -270,7 +273,7 @@ i2cSendDataLength = dataLength + 2; #ifdef BOOTLOAD_DEBUG { - unsigned char i; + uint8_t i; printf("I2C: Page 0x%BX%BX:\n", i2cSendData[0], i2cSendData[1]); for (i=2; i<i2cSendDataLength; i++) printf("%BX", i2cSendData[i]); Modified: firmware/fuxusb/trunk/src/bootloader.h =================================================================== --- firmware/fuxusb/trunk/src/bootloader.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/bootloader.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,14 +17,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _BOOTLOADER_H_ #define _BOOTLOADER_H_ -void bootloader_cmd_parser(void); -void i2c_task(void); - /** USB bootloader commands */ #define BOOT_INIT 1 #define BOOT_FILLPAGE 2 @@ -47,20 +44,13 @@ uint8_t xdata *blData; } blHeader_t; -extern bit bl_send_acknoledge; +/* Variables */ extern bit i2c_bootloading_Flag; extern blHeader_t blHeader; -/* - * Extern declarations - */ -/* -extern uint8_t Command_FromUSB_bootload_cmd; -extern uint8_t cpu_address; -extern uint8_t page_size; -extern uint8_t page_address; -extern uint8_t packets_per_page; -extern uint8_t address_idx; -extern uint8_t packet_idx; -*/ +/* Functions */ +void bootloader_cmd_parser(void); +void i2c_task(void); + + #endif // _BOOTLOADER_H_ Modified: firmware/fuxusb/trunk/src/fifo_spk.c =================================================================== --- firmware/fuxusb/trunk/src/fifo_spk.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/fifo_spk.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ /** \file fifo_spk.c \brief Speaker FIFO @@ -63,8 +63,8 @@ */ void FIFO_SPK_put_n (uint8_t const n) { - Uchar i = n; - Uchar FilterByte; + uint8_t i = n; + uint8_t FilterByte; do { FifoOut_SPK_cmpt++; @@ -95,7 +95,7 @@ */ uint8_t FIFO_SPK_get(void) { - unsigned char Data; + uint8_t Data; if (FifoOut_SPK_cmpt < FIFO_SPK_READY_VALUE_MIN) Fifoready_SPK = 0; // FIFO empty Modified: firmware/fuxusb/trunk/src/global.h =================================================================== --- firmware/fuxusb/trunk/src/global.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/global.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -22,7 +22,7 @@ #ifndef _GLOBAL_H_ #define _GLOBAL_H_ -#include "src\common\api.h" +#include "common\api.h" #include "common\defines.h" #define rf_reset_signal P0_1 Modified: firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.c =================================================================== --- firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -19,10 +19,10 @@ /*_____ D E F I N I T I O N ________________________________________________*/ -Uchar data api_command _at_ 0x1C; -Uchar data api_value _at_ 0x1D; -Uchar data api_dpl _at_ 0x1F; -Uchar data api_dph _at_ 0x1E; +uint8_t data api_command _at_ 0x1C; +uint8_t data api_value _at_ 0x1D; +uint8_t data api_dpl _at_ 0x1F; +uint8_t data api_dph _at_ 0x1E; #define MSK_AUXR1_ENBOOT 0x20 @@ -55,7 +55,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar __api_rd_generic (Uchar command, Uchar dpl) +uint8_t __api_rd_generic (uint8_t command, uint8_t dpl) { api_command = command; api_dpl = dpl; @@ -85,7 +85,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar __api_wr_generic (Uchar command, Uchar value, Uchar dpl) +uint8_t __api_wr_generic (uint8_t command, uint8_t value, uint8_t dpl) { bit ea_save; @@ -123,7 +123,7 @@ * REQUIREMENTS: *****************************************************************************/ #ifdef __API_RD_CODE_BYTE -Uchar __api_rd_code_byte (Uchar code * pt_address) +uint8_t __api_rd_code_byte (uint8_t code * pt_address) { return(*pt_address); } @@ -152,7 +152,7 @@ * REQUIREMENTS: *****************************************************************************/ #ifdef __API_WR_CODE_BYTE -Uchar __api_wr_code_byte (Uchar xdata * pt_address, Uchar value) +uint8_t __api_wr_code_byte (uint8_t xdata * pt_address, uint8_t value) { bit ea_save; @@ -201,11 +201,11 @@ * REQUIREMENTS: *****************************************************************************/ #ifdef __API_WR_CODE_PAGE -Uchar __api_wr_code_page (Uchar xdata * pt_code, Uchar xdata * pt_xram, Uchar nb_data) +uint8_t __api_wr_code_page (uint8_t xdata * pt_code, uint8_t xdata * pt_xram, uint8_t nb_data) { - Uchar data i, temp, temp_nb_data; + uint8_t data i, temp, temp_nb_data; bit ea_save; - Uint16 data add_pt_code, add_pt_xram; + uint16_t data add_pt_code, add_pt_xram; add_pt_xram = pt_xram; add_pt_code = pt_code; @@ -215,9 +215,9 @@ api_command = _COMMAND_WR_CODE_BYTE; for (i=0 ; i< temp_nb_data; i++,add_pt_xram++,add_pt_code++) { - temp = *(Uchar xdata *)add_pt_xram; + temp = *(uint8_t xdata *)add_pt_xram; FCON = 0x08; - *(Uchar xdata *)add_pt_code = temp; + *(uint8_t xdata *)add_pt_code = temp; FCON = 0x00; } @@ -258,11 +258,11 @@ * REQUIREMENTS: *****************************************************************************/ #ifdef __API_WR_CODE_PAGE_FIX -Uchar __api_wr_code_page_fix (Uchar xdata * pt_code, Uchar xdata * pt_xram, Uchar nb_data) +uint8_t __api_wr_code_page_fix (uint8_t xdata * pt_code, uint8_t xdata * pt_xram, uint8_t nb_data) { bit ea_save; - Uint16 add_xram; - data Uint16 add_code; + uint16_t add_xram; + data uint16_t add_code; add_xram = DPTR; // save the DPTR @@ -273,7 +273,7 @@ api_command =0x01; api_value = nb_data; api_dpl = LOW(add_xram); - api_dph = ((Uchar)((add_xram)>>8)); + api_dph = ((uint8_t)((add_xram)>>8)); AUXR1++; // add_xram = DPTR; // save the DPTR // DPTR = pt_code; @@ -305,9 +305,9 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar __api_wr_fuse (Uchar mask, Uchar filter) +uint8_t __api_wr_fuse (uint8_t mask, uint8_t filter) { - Uchar value; + uint8_t value; bit ea_save; ea_save = EA; @@ -349,7 +349,7 @@ * REQUIREMENTS: *****************************************************************************/ #ifdef __API_ERASE_BLOCK -Uchar __api_erase_block (block_t num_block) +uint8_t __api_erase_block (block_t num_block) { bit ea_save; @@ -412,9 +412,9 @@ * REQUIREMENTS: *****************************************************************************/ #ifdef __API_RD_EEPROM_BYTE -Uchar __api_rd_eeprom_byte(Uchar xdata *address) +uint8_t __api_rd_eeprom_byte(uint8_t xdata *address) { - Uchar val; + uint8_t val; EECON = 0x02; val = *address; @@ -445,7 +445,7 @@ * REQUIREMENTS: *****************************************************************************/ #ifdef __API_WR_EEPROM_BYTE -Uchar __api_wr_eeprom_byte (Uchar xdata *address, Uchar value) +uint8_t __api_wr_eeprom_byte (uint8_t xdata *address, uint8_t value) { bit ea_save; Modified: firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.h =================================================================== --- firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -98,9 +98,9 @@ -extern Uchar __api_rd_generic (Uchar command, Uchar dpl); -extern Uchar __api_wr_generic (Uchar command, Uchar value, Uchar dpl); -extern Uchar __api_wr_fuse (Uchar mask, Uchar filter); +extern uint8_t __api_rd_generic (uint8_t command, uint8_t dpl); +extern uint8_t __api_wr_generic (uint8_t command, uint8_t value, uint8_t dpl); +extern uint8_t __api_wr_fuse (uint8_t mask, uint8_t filter); /*---- API for Read access ------------------------------------------------*/ @@ -145,15 +145,15 @@ #define __api_rd_bootloader_version() __api_rd_generic(_COMMAND_RD_SPECIAL, 0x00) #endif -extern Uchar __api_rd_code_byte (Uchar code * pt_address); +extern uint8_t __api_rd_code_byte (uint8_t code * pt_address); /*---- API for Write access -----------------------------------------------*/ /****************************************************************************/ -extern Uchar __api_wr_code_byte (Uchar xdata* , Uchar); -extern Uchar __api_wr_code_page (Uchar xdata* pt_code, Uchar xdata* pt_xram, Uchar nb_data); -extern Uchar __api_wr_code_page_fix (Uchar xdata* pt_code, Uchar xdata* pt_xram, Uchar nb_data); +extern uint8_t __api_wr_code_byte (uint8_t xdata* , uint8_t); +extern uint8_t __api_wr_code_page (uint8_t xdata* pt_code, uint8_t xdata* pt_xram, uint8_t nb_data); +extern uint8_t __api_wr_code_page_fix (uint8_t xdata* pt_code, uint8_t xdata* pt_xram, uint8_t nb_data); #ifdef __API_WR_BSB #define __api_wr_BSB(value) __api_wr_generic(_COMMAND_WR_XAF, value, 0) @@ -191,7 +191,7 @@ #define __api_clr_BLJB() __api_wr_fuse(0x40, 0x00) #endif -extern Uchar __api_erase_block (block_t); +extern uint8_t __api_erase_block (block_t); /*---- API for EEPROM access ----------------------------------------------*/ /****************************************************************************/ @@ -201,11 +201,11 @@ #endif #ifdef __API_RD_EEPROM_BYTE - extern Uchar __api_rd_eeprom_byte (Uchar xdata *); + extern uint8_t __api_rd_eeprom_byte (uint8_t xdata *); #endif #ifdef __API_WR_EEPROM_BYTE - extern Uchar __api_wr_eeprom_byte (Uchar xdata *, Uchar); + extern uint8_t __api_wr_eeprom_byte (uint8_t xdata *, uint8_t); #endif /*---- API to start bootloader execution ----------------------------------*/ Modified: firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.c =================================================================== --- firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -44,7 +44,7 @@ *****************************************************************************/ -unsigned char spi_SendByte(Uchar Data) +uint8_t spi_SendByte(uint8_t Data) { SPDAT = Data; while(!(SPSTA&0x80)); Modified: firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.h =================================================================== --- firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -26,6 +26,6 @@ /*_____ P R O T O T Y P E S ____________________________________________________________*/ extern void spi_init(void); -extern unsigned char spi_SendByte(Uchar Data); +extern uint8_t spi_SendByte(uint8_t Data); #endif Modified: firmware/fuxusb/trunk/src/lib_mcu/uart/tools/c51_bdr.c =================================================================== --- firmware/fuxusb/trunk/src/lib_mcu/uart/tools/c51_bdr.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/lib_mcu/uart/tools/c51_bdr.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -57,7 +57,7 @@ 1843200, 0 }; -unsigned int fosc; +uint16_t fosc; int bdr (int prescaler, int max, int val) { Modified: firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.c =================================================================== --- firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -67,7 +67,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -void usb_configure_endpoint (Uchar ep_num, Uchar ep_type) +void usb_configure_endpoint (uint8_t ep_num, uint8_t ep_type) { Usb_select_ep(ep_num); Usb_configure_ep_type(ep_type); @@ -90,7 +90,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar usb_select_enpoint_interrupt(void) +uint8_t usb_select_enpoint_interrupt(void) { if (EP0INT) { Usb_select_ep(0); } else if (EP1INT) { Usb_select_ep(1); } @@ -124,7 +124,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar usb_get_nb_byte (void) +uint8_t usb_get_nb_byte (void) { return (UBYCTLX); } @@ -148,9 +148,9 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uint16 usb_get_nb_byte_epw (void) +uint16_t usb_get_nb_byte_epw (void) { - return ((((Uint16)UBYCTHX)<<8)|(UBYCTLX)); + return ((((uint16_t)UBYCTHX)<<8)|(UBYCTLX)); } /*F************************************************************************** @@ -175,7 +175,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar* usb_send_ep0_packet (Uchar* tbuf, Uchar data_length) +uint8_t * usb_send_ep0_packet (uint8_t * tbuf, uint8_t data_length) { Usb_select_ep(0); @@ -209,7 +209,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar* usb_send_right_packet ( Uchar * tbuf, Uchar data_length) +uint8_t * usb_send_right_packet (uint8_t * tbuf, uint8_t data_length) { for ( ; data_length-- ; tbuf++) { Usb_write_byte(*tbuf); } //Usb_set_tx_ready(); @@ -243,7 +243,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -Uchar* usb_read_right_packet (Uchar* rbuf, Uchar data_length) +uint8_t * usb_read_right_packet (uint8_t * rbuf, uint8_t data_length) { for (; data_length-- ; rbuf++) { *rbuf = Usb_read_byte(); } @@ -268,7 +268,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -void usb_halt_endpoint (Uchar ep_num) +void usb_halt_endpoint (uint8_t ep_num) { Usb_select_ep(ep_num); UEPSTAX = 0x00; @@ -292,7 +292,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ -void usb_reset_endpoint (Uchar ep_num) +void usb_reset_endpoint (uint8_t ep_num) { UEPRST = 0x01 << ep_num ; UEPRST = 0x00; @@ -393,8 +393,8 @@ #if FOSC == 0000 /* frequency Auto-detection */ -Uchar i; -Uchar reload; +uint8_t i; +uint8_t reload; PLLCON = 0x00; Modified: firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.h =================================================================== --- firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -34,7 +34,7 @@ #define INTERRUPT_OUT 0x83 #define ISOCHRONOUS_IN 0x85 #define ISOCHRONOUS_OUT 0x81 -#define BULK_MAX_SIZE ((Uchar)64) +#define BULK_MAX_SIZE ((uint8_t)64) @@ -117,7 +117,7 @@ * EXAMPLE: * if (Usb_test_it_ep(3)) // True if interrupt on endpoint 3 *****************************************************************************/ -#define Usb_test_it_ep(ep_num) (UEPINT & ((Uchar)1<<(ep_num))) +#define Usb_test_it_ep(ep_num) (UEPINT & ((uint8_t)1<<(ep_num))) /* {for langdoc}*/ @@ -289,16 +289,16 @@ /*_____ D E C L A R A T I O N ______________________________________________*/ -void usb_configure_endpoint (Uchar , Uchar); -Uchar usb_get_nb_byte (void); -Uint16 usb_get_nb_byte_epw (void); -Uchar* usb_send_ep0_packet (Uchar*, Uchar); -Uchar* usb_send_right_packet (Uchar*, Uchar); -Uchar* usb_read_right_packet ( Uchar*, Uchar); -void usb_reset_endpoint (Uchar); -Uchar usb_select_enpoint_interrupt (void); -void usb_halt_endpoint (Uchar); -void configure_usb_clock (void); +void usb_configure_endpoint(uint8_t, uint8_t); +uint8_t usb_get_nb_byte(void); +uint16_t usb_get_nb_byte_epw(void); +uint8_t* usb_send_ep0_packet(uint8_t*, uint8_t); +uint8_t* usb_send_right_packet(uint8_t*, uint8_t); +uint8_t* usb_read_right_packet(uint8_t*, uint8_t); +void usb_reset_endpoint(uint8_t); +uint8_t usb_select_enpoint_interrupt (void); +void usb_halt_endpoint(uint8_t); +void configure_usb_clock(void); #endif /* _USB_DRV_H_ */ Modified: firmware/fuxusb/trunk/src/main.c =================================================================== --- firmware/fuxusb/trunk/src/main.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/main.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "global.h" @@ -63,8 +63,11 @@ { usb_task(); + /* Bootloader active */ if (i2c_bootloading_Flag) + { i2c_task(); + } else { /* If RF is online, goto spi_task */ Modified: firmware/fuxusb/trunk/src/misc.c =================================================================== --- firmware/fuxusb/trunk/src/misc.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/misc.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -18,7 +18,7 @@ */ /* $Id$ */ - +#include "config.h" #include "global.h" #include "misc.h" Modified: firmware/fuxusb/trunk/src/misc.h =================================================================== --- firmware/fuxusb/trunk/src/misc.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/misc.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,12 +17,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _MISC_H_ #define _MISC_H_ -#include "config.h" void led_behavior(void); void wait_reset(void); Modified: firmware/fuxusb/trunk/src/spi_lib.c =================================================================== --- firmware/fuxusb/trunk/src/spi_lib.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/spi_lib.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -44,7 +44,7 @@ *****************************************************************************/ -uint8_t spi_SendByte(Uchar Data) +uint8_t spi_SendByte(uint8_t Data) { SPDAT = Data; while(!(SPSTA&0x80)); Modified: firmware/fuxusb/trunk/src/spi_lib.h =================================================================== --- firmware/fuxusb/trunk/src/spi_lib.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/spi_lib.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -26,6 +26,6 @@ /*_____ P R O T O T Y P E S ____________________________________________________________*/ extern void spi_init(void); -extern uint8_t spi_SendByte(Uchar Data); +extern uint8_t spi_SendByte(uint8_t Data); #endif Modified: firmware/fuxusb/trunk/src/spi_task.c =================================================================== --- firmware/fuxusb/trunk/src/spi_task.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/spi_task.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "global.h" #include "config.h" @@ -50,11 +50,13 @@ READ_COMMAND } spi_master; +/* Externs defs */ uint8_t RF_Status; bit new_cmd_enabled; bit new_command_received; bit spi_task_on_Flag = True; +/* Static defs */ static uint8_t spi_slave_config; static uint8_t spi_master_config; static uint8_t spi_count; Modified: firmware/fuxusb/trunk/src/spi_task.h =================================================================== --- firmware/fuxusb/trunk/src/spi_task.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/spi_task.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _SPITASK_H_ #define _SPITASK_H_ @@ -25,11 +25,13 @@ #define SPI_START P3_4 #define SPI_DREADY P3_2 +/* Variables */ extern uint8_t RF_Status; extern bit new_cmd_enabled; extern bit new_command_received; extern bit spi_task_on_Flag; +/* Functions */ void spi_task_init(void); void spi_task(void); void spi_task_reset(void); Modified: firmware/fuxusb/trunk/src/usb_commands.c =================================================================== --- firmware/fuxusb/trunk/src/usb_commands.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_commands.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -32,6 +32,7 @@ #include "lib_mcu\fa-usb\flash_api.h" #include "lib_mcu\usb\usb_drv.h" +/* Statics defs */ static void dongle_cmd_parser(void); static void tux_cmd_parser(void); static void jump_bootloader(void); Modified: firmware/fuxusb/trunk/src/usb_commands.h =================================================================== --- firmware/fuxusb/trunk/src/usb_commands.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_commands.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _USB_COMMANDS_H_ #define _USB_COMMANDS_H_ @@ -38,6 +38,7 @@ #define TTS_OFF 0 #define TTS_ON 1 +/* Functions */ void bl_acknowledge(uint8_t ack, uint8_t p1, uint8_t p2, uint8_t p3); void commands_parser(void); void prepare_status(void); Modified: firmware/fuxusb/trunk/src/usb_enum.c =================================================================== --- firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_enum.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,18 +17,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "global.h" #include "version.h" #include "usb_enum.h" -#include "usb_ep.h" -#include "lib_mcu\usb\usb_drv.h" -#include "spi_lib.h" #include "spi_task.h" #include "fifo_stt.h" +#include "lib_mcu\usb\usb_drv.h" + uint8_t usb_configuration_nb = 0; /*_____ M A C R O S _________________________________________________________*/ @@ -40,7 +39,7 @@ { sizeof(usb_device_descriptor), DEVICE, USB_SPECIFICATION, DEVICE_CLASS, DEVICE_SUB_CLASS, DEVICE_PROTOCOL, EP_CONTROL_LENGTH, VENDOR_ID, PRODUCT_ID, - ((unsigned int)RELEASE_NUMBER), MAN_STRING_INDEX, PROD_STRING_INDEX, + ((uint16_t)RELEASE_NUMBER), MAN_STRING_INDEX, PROD_STRING_INDEX, SN_STRING_INDEX, NB_CONFIGURATION }; @@ -134,7 +133,7 @@ // Report descriptor //------------------------------------------------------------------------- - Uchar rep[SIZE_OF_REPORT]; + uint8_t rep[SIZE_OF_REPORT]; } usb_configuration = { @@ -618,12 +617,12 @@ }; static bit zlp; -static Uchar endpoint_status[3]; -static Uchar hid_idle_duration; -static Uchar *pbuffer; -static Uchar bmRequestType; -static Uchar bRequest; -Uchar line_coding[7]; +static uint8_t endpoint_status[3]; +static uint8_t hid_idle_duration; +static uint8_t *pbuffer; +static uint8_t bmRequestType; +static uint8_t bRequest; +uint8_t line_coding[7]; /*_____ D E C L A R A T I O N _______________________________________________*/ @@ -677,8 +676,8 @@ usb_configuration_nb = 0; //usb_connected_Flag = FALSE; //usb_sof_counter = 0; - CMD_IN_Bank_Nb = 0; - CMD_OUT_Bank_Nb = 0; + //CMD_IN_Bank_Nb = 0; + //CMD_OUT_Bank_Nb = 0; } @@ -902,7 +901,7 @@ *****************************************************************************/ static void usb_set_address (void) { - Uchar add; + uint8_t add; add = Usb_read_byte(); /* store the LSB of wValue = address */ Usb_clear_rx_setup(); @@ -938,7 +937,7 @@ // R modif long tc; // - Uchar configuration_number; + uint8_t configuration_number; configuration_number = Usb_read_byte(); /* read the conf. num. in wValue */ Usb_clear_DIR(); Usb_clear_rx_setup(); @@ -1007,11 +1006,11 @@ *****************************************************************************/ static void usb_set_interface (void) { - unsigned char LAlternateSetting; - unsigned char HAlternateSetting; + uint8_t LAlternateSetting; + uint8_t HAlternateSetting; - unsigned char Linterface_number; - unsigned char Hinterface_number; + uint8_t Linterface_number; + uint8_t Hinterface_number; LAlternateSetting = Usb_read_byte(); /* read the conf. num. in wValue */ HAlternateSetting = Usb_read_byte(); /* read the conf. num. in wValue */ @@ -1048,10 +1047,10 @@ *****************************************************************************/ static void usb_get_descriptor (void) { - Uint16 data_to_transfer; - Uint16 wLength; - Uchar descriptor_type; - Uchar string_type; + uint16_t data_to_transfer; + uint16_t wLength; + uint8_t descriptor_type; + uint8_t string_type; zlp = FALSE; /* no zero length packet */ string_type = Usb_read_byte(); /* read LSB of wValue */ @@ -1211,8 +1210,8 @@ ACC = Usb_read_byte(); /* don't care of wIndex field */ ACC = Usb_read_byte(); - ((Uchar*)&wLength)[1] = Usb_read_byte(); /* read wLength */ - ((Uchar*)&wLength)[0] = Usb_read_byte(); + ((uint8_t *)&wLength)[1] = Usb_read_byte(); /* read wLength */ + ((uint8_t *)&wLength)[0] = Usb_read_byte(); if (wLength > data_to_transfer) { if ((data_to_transfer % EP_CONTROL_LENGTH) == 0) { zlp = TRUE; } @@ -1315,11 +1314,11 @@ *****************************************************************************/ static void usb_get_current (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_rx_setup(); Usb_set_DIR(); @@ -1347,11 +1346,11 @@ static void usb_get_min (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_rx_setup(); Usb_set_DIR(); @@ -1373,11 +1372,11 @@ static void usb_get_max (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_rx_setup(); Usb_set_DIR(); @@ -1399,11 +1398,11 @@ static void usb_get_res (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_rx_setup(); Usb_set_DIR(); @@ -1442,11 +1441,11 @@ *****************************************************************************/ static void usb_set_current (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_DIR(); Usb_clear_rx_setup(); @@ -1468,11 +1467,11 @@ static void usb_set_min (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_DIR(); Usb_clear_rx_setup(); @@ -1490,11 +1489,11 @@ static void usb_set_max (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_DIR(); Usb_clear_rx_setup(); @@ -1512,11 +1511,11 @@ static void usb_set_res (void) { - unsigned char LwValue = Usb_read_byte(); - unsigned char HwValue = Usb_read_byte(); + uint8_t LwValue = Usb_read_byte(); + uint8_t HwValue = Usb_read_byte(); - unsigned char LwIndex = Usb_read_byte(); - unsigned char HwIndex = Usb_read_byte(); + uint8_t LwIndex = Usb_read_byte(); + uint8_t HwIndex = Usb_read_byte(); Usb_clear_DIR(); Usb_clear_rx_setup(); @@ -1610,7 +1609,7 @@ *****************************************************************************/ static void usb_get_status (void) { - Uchar wIndex; + uint8_t wIndex; ACC = Usb_read_byte(); /* dummy read */ ACC = Usb_read_byte(); /* dummy read */ Modified: firmware/fuxusb/trunk/src/usb_enum.h =================================================================== --- firmware/fuxusb/trunk/src/usb_enum.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_enum.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _USB_ENUM_H_ #define _USB_ENUM_H_ Modified: firmware/fuxusb/trunk/src/usb_ep.c =================================================================== --- firmware/fuxusb/trunk/src/usb_ep.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_ep.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -24,20 +24,23 @@ #include "usb_enum.h" #include "usb_commands.h" #include "spi_task.h" -#include "lib_mcu\usb\usb_drv.h" #include "fifo_spk.h" #include "fifo_mic.h" +#include "lib_mcu\usb\usb_drv.h" +/* Externs defs */ +uint8_t CMD_OUT_Bank_Nb; +uint8_t CMD_IN_Bank_Nb; +bit tts_pipe_selected = False; +bit status_requested = False; + +/* Statics defs */ static void clear_mic_ep(void); static void read_tts_ep(void); static void read_spk_ep(void); static void clear_cmdout_ep(void); static void clear_cmdin_ep(void); -uint8_t CMD_OUT_Bank_Nb; -uint8_t CMD_IN_Bank_Nb; -bit tts_pipe_selected = False; -bit status_requested = False; static bit fifo_mic_loaded = False; /** @@ -84,7 +87,7 @@ clear_cmdin_ep(); } -/* +/** * \brief Send the statuses previously prepared */ void send_status(void) @@ -113,7 +116,7 @@ Usb_select_ep(EP_AUDIO_IN); - i=8; + i = 8; do { Usb_write_byte(FIFO_MIC_get()); i--; Modified: firmware/fuxusb/trunk/src/usb_ep.h =================================================================== --- firmware/fuxusb/trunk/src/usb_ep.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_ep.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,16 +17,18 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _USB_EP_H_ #define _USB_EP_H_ +/* Variables */ extern bit status_requested; extern bit tts_pipe_selected; extern uint8_t CMD_OUT_Bank_Nb; extern uint8_t CMD_IN_Bank_Nb; +/* Functions */ void endpoints_parser(void); void send_status(void); void fill_mic_ep(void); Modified: firmware/fuxusb/trunk/src/usb_misc.c =================================================================== --- firmware/fuxusb/trunk/src/usb_misc.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_misc.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "global.h" @@ -57,7 +57,8 @@ /* Detach and attach usb */ tc=10000; Usb_detach(); - while(tc) tc --; //tempo(TIMER_5_MS); + while(tc) tc --; Usb_attach(); } + Modified: firmware/fuxusb/trunk/src/usb_misc.h =================================================================== --- firmware/fuxusb/trunk/src/usb_misc.h 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_misc.h 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _USB_MISC_H_ #define _USB_MISC_H_ @@ -26,6 +26,7 @@ void resume_usb(void); void reset_usb(void); void reattach_usb(void); +void usb_var_init (void); #endif // _USB_MISC_H_ Modified: firmware/fuxusb/trunk/src/usb_task.c =================================================================== --- firmware/fuxusb/trunk/src/usb_task.c 2008-05-15 08:12:23 UTC (rev 1150) +++ firmware/fuxusb/trunk/src/usb_task.c 2008-05-15 08:57:03 UTC (rev 1151) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "global.h" @@ -31,14 +31,13 @@ void usb_task_init(void) { - unsigned long SfTimer=10000; + uint16_t timer=10000; configure_usb_clock(); Usb_enable(); - Usb_detach(); - while(SfTimer) SfTimer --; - Usb_attach(); + reattach_usb(); + usb_configure_endpoint(EP_CONTROL, CONTROL); usb_reset_endpoint(EP_CONTROL); |
From: Paul_R <c2m...@c2...> - 2008-05-15 08:23:28
|
Author: Paul_R Date: 2008-05-15 10:12:23 +0200 (Thu, 15 May 2008) New Revision: 1150 Removed: firmware/fuxusb/trunk/src/Doxyfile Modified: firmware/fuxusb/trunk/src/fifo_stt.c firmware/fuxusb/trunk/src/fifo_stt.h firmware/fuxusb/trunk/src/global.h firmware/fuxusb/trunk/src/misc.c Log: * Removed Doxyfile. I don't use doxygen doc ATM. * Minor changes in the led behavior function * Added the file header on global.h Deleted: firmware/fuxusb/trunk/src/Doxyfile =================================================================== --- firmware/fuxusb/trunk/src/Doxyfile 2008-05-15 07:54:36 UTC (rev 1149) +++ firmware/fuxusb/trunk/src/Doxyfile 2008-05-15 08:12:23 UTC (rev 1150) @@ -1,1277 +0,0 @@ -# Doxyfile 1.5.2 - Doxygen configuration file for TUXCORE -# -# TUXCORE - Firmware for the 'core' CPU of tuxdroid -# Copyright (C) 2007 C2ME S.A. <tux...@c2...> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -# $Id: Doxyfile 667 2007-11-08 15:45:41Z jaguarondi $ - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = tuxcore - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = $(VERSION) - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command <command> <input-file>, where <command> is the value of -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = - -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = */.svn/* */dep/* - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = doc - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = NO - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = __DOXYGEN__ - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen will always -# show the root nodes and its direct children regardless of this setting. - -DOT_GRAPH_MAX_NODES = 50 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO Modified: firmware/fuxusb/trunk/src/fifo_stt.c =================================================================== --- firmware/fuxusb/trunk/src/fifo_stt.c 2008-05-15 07:54:36 UTC (rev 1149) +++ firmware/fuxusb/trunk/src/fifo_stt.c 2008-05-15 08:12:23 UTC (rev 1150) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "fifo_stt.h" Modified: firmware/fuxusb/trunk/src/fifo_stt.h =================================================================== --- firmware/fuxusb/trunk/src/fifo_stt.h 2008-05-15 07:54:36 UTC (rev 1149) +++ firmware/fuxusb/trunk/src/fifo_stt.h 2008-05-15 08:12:23 UTC (rev 1150) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _FIFO_STT_H_ #define _FIFO_STT_H_ Modified: firmware/fuxusb/trunk/src/global.h =================================================================== --- firmware/fuxusb/trunk/src/global.h 2008-05-15 07:54:36 UTC (rev 1149) +++ firmware/fuxusb/trunk/src/global.h 2008-05-15 08:12:23 UTC (rev 1150) @@ -1,3 +1,24 @@ +/* + * FUXUSB - Firmware for the USB CPU of tuxdroid + * Copyright (C) 2008 C2ME S.A. <tux...@c2...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* $Id$ */ + #ifndef _GLOBAL_H_ #define _GLOBAL_H_ Modified: firmware/fuxusb/trunk/src/misc.c =================================================================== --- firmware/fuxusb/trunk/src/misc.c 2008-05-15 07:54:36 UTC (rev 1149) +++ firmware/fuxusb/trunk/src/misc.c 2008-05-15 08:12:23 UTC (rev 1150) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "global.h" #include "misc.h" @@ -30,21 +30,21 @@ if(RF_OFFLINE) { - if (usb_sof_counter == 0x00) + if (usb_sof_counter == 0x01) Led_0_off(); - else if (usb_sof_counter == 0x2FF) + else if (usb_sof_counter == 0x300) Led_0_on(); - else if (usb_sof_counter == 0x3FF) - usb_sof_counter = 0xFFFE; + else if (usb_sof_counter == 0x400) + usb_sof_counter = 0x00; } else { - if (usb_sof_counter == 0x00) + if (usb_sof_counter == 0x01) Led_0_off(); else if (usb_sof_counter == 0x10) Led_0_on(); else if (usb_sof_counter == 0x20) - usb_sof_counter = 0xFFFE; + usb_sof_counter = 0x00; /* * When the RF is connected, the counter can be greater than 0x20. * If it's greater than the maximum, clear it |
From: jaguarondi <c2m...@c2...> - 2008-05-15 07:55:14
|
Author: jaguarondi Date: 2008-05-15 09:54:36 +0200 (Thu, 15 May 2008) New Revision: 1149 Modified: firmware/tuxdefs/commands.h Log: * Forgot to commit a slight change in commands.h. Modified: firmware/tuxdefs/commands.h =================================================================== --- firmware/tuxdefs/commands.h 2008-05-14 15:05:20 UTC (rev 1148) +++ firmware/tuxdefs/commands.h 2008-05-15 07:54:36 UTC (rev 1149) @@ -249,6 +249,7 @@ GERROR_NONE = 0, GERROR_CMDINBUF_OVF, GERROR_CMDINBUF_EMPTY, + GERROR_CMDOUTBUF_EMPTY, GERROR_CMDOUTBUF_FULL, GERROR_INV_RECEIVE_LENGTH, CMDGERROR_OUTBUF_OVF, |
From: Paul_R <c2m...@c2...> - 2008-05-14 15:05:39
|
Author: Paul_R Date: 2008-05-14 17:05:20 +0200 (Wed, 14 May 2008) New Revision: 1148 Modified: software_suite_v2/middleware/tuxdriver/trunk/firmware/fuxusb.hex Log: * Updated fuxusb.hex with the trunk version (rev 1147) Modified: software_suite_v2/middleware/tuxdriver/trunk/firmware/fuxusb.hex =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/firmware/fuxusb.hex 2008-05-14 14:52:07 UTC (rev 1147) +++ software_suite_v2/middleware/tuxdriver/trunk/firmware/fuxusb.hex 2008-05-14 15:05:20 UTC (rev 1148) @@ -1,577 +1,514 @@ -:101BF900C281D2A3438F01D2AF1212541200468080 -:011C0900FBDF -:0C1CBE00C8040401C9000004CA000000B2 -:041960004102280018 -:10196400C10BC10EC10AC10CC10D43022B01022ED1 -:10145700EF90030824FFFFEE34FFFEED34FFFDECB1 -:1014670034FFFC0208279002FBE0FF04F090030220 -:10147700E0FCA3E02FF582E43CF583E5CFF0051A05 -:1014870022900308E0FCA3E0FDA3E0FEA3E0FFEC4D -:101497004D4E4F22E490030BF0FB22900223E0FE17 -:0514A700A3E0FF4E224E -:1012540090030812083300002710121D6F43BC804E -:1012640043BC1090030812148B600F900308A3A3CF -:10127400A3E090030812145B80E953BCEF7D80E483 -:10128400FF121D68E4FF121C2C12002653F1FC43CC -:10129400F103D2B375C70443D51053CEFE53CEEF3A -:1012A40053D5EFC20AC280C290C200E490019CF000 -:0C12B400C204C20DD207D209C206C20853 -:0112C000220B -:101B1200C291C281E4FFFE0FBF00010EE4B507F7D8 -:061B2200EEB47DF3D28158 -:011B2800229A -:101B2900D291C281E4FFFE0FBF00010EE4B507F7B1 -:061B3900EEB47DF3D28141 -:011B3F002283 -:101172003006709001E1E0C39402506775C704E441 -:10118200F5CF30A304F5CF800375CF0190019CE029 -:10119200F5CF900270E060081313543FF5CF80033F -:1011A200E4F5CFE4F51B900270E0FFE51BC39F500E -:1011B20009121C6C8FCF051B80EC900270E0F51BAE -:1011C200E51BC3943C5007E4F5CF051B80F2900168 -:1011D200E1E004F0C20A121DA2E490019CF0C206F2 -:0311E200121B6974 -:0111E50022E7 -:10172B003008319001E1E0C39402502875C704E4FE -:10173B00F51B900270E0FFE51BC39F5009121C6C58 -:10174B008FCF051B80EC121DA29001E1E004F0C2CB -:04175B0008121B69EC -:01175F002267 -:101B69009001E1E0600B75C704E5CE20E40343CEA4 -:021B7900102238 -:10160800900308EFF0A3EDF0A3EBF0121DA27FF01A -:10161800121A78900308E06004E4FF80027F011248 -:101628001A78900309E0FF121A7890030AE0FF1273 -:0F1638001A7890030BE0FF121A78D20802172BD2 -:05000600C20E021B29DF -:100FC50090019DE06401600302104FA3E0707BA3D4 -:100FD500E07077A3E0FF7002D206EF64FE7029F59A -:100FE500A8F5B175C3149003081208330000271043 -:100FF50043BC10121488600512145780F653BCEFD9 -:1010050075A61E75A6E180FE9001A0E0F4703BF583 -:10101500A8F5B175C314FD7F4012188D7B017DF4D1 -:101025007F04121AAE9003081208330000271043FC -:10103500BC10121488600512145780F653BCEF12C9 -:101045001D5975A61E75A6E180FE90019DE0B402AE -:0F1055000EA3E0FFB40103D20D22EF7002C20D13 -:011064002269 -:0E0F1200900308EBF0A3EAF0A3E9F0A3EDF0E2 -:100F2000E4A3F090030CE0FF90030BE0D39F407824 -:100F3000900308E0FBA3E0FAA3E0F98F8275830039 -:100F400012076764067057901CBE93FF121A7890C0 -:100F50001CBF120FA9901CC0120FA9901CC1120F28 -:100F6000B0901CC2120FB0901CC3120FB7901CC3DC -:100F7000E4740193FF121A78901CC5120FB7901CED -:100F8000C6120FBE901CC7120FBE901CC7E474019E -:100F900093FF121A78901CC9E493FF121A789003F9 -:080FA0000CE02404F0020F2311 -:100FA80022E493FF121A7822E493FF121A7822E4BB -:0D0FB80093FF121A7822E493FF121A782298 -:10004600200519E5BD20E50302041053BCBFD20507 -:1000560053BDFE53BDDF53BDF7020410E5BD543159 -:10006600602EE5BD30E00CC205D2B3C28153BDFEA1 -:1000760043BC40E5BD30E41853BDEF120026D2055F -:10008600121939121C3D121C4D121D9ED2B3C2818B -:10009600E5BD20E30302014953BDF7900224E004C5 -:1000A600F07006900223E004F09001DEE07002A3F7 -:1000B600E060109001DFE024FFF09001DEE034FF05 -:1000C600F08010200E0DE4F514F513D20FD291C274 -:1000D60010C211900228E0600214F030056590020B -:1000E60026E0605F30A32C20040F53F1FC43F1019E -:1000F600E4900223F0A3F0D2041214A27002D2B349 -:10010600BE0205BFFF02C2B3EFF47003EE640370D4 -:1001160032802730040F53F1FC43F103E4900223AD -:10012600F0A3F0C2041214A27002D2B3EF64104E10 -:100136007002C2B3EF64204E700990022374FFF080 -:10014600A314F012117212172B200B1C900226E03A -:10015600601630141375C701751A081215428FCF31 -:10016600D51AF843CE10D20BE5F87003020410E559 -:10017600F830E42275C704E5CE30E01A53CEFE907F -:1001860001E1E014F0E0C394005002E4F09001E1D4 -:10019600E0600343CE10E5F830E00BE4F5C7E5CEAA -:1001A60030E203121D7DE5F830E31A75C703121D10 -:1001B600B2EF600E300D0B751A08AFCF12182FD59F -:1001C6001AF853CEFDE5F830E21A75C702121DB2D1 -:1001D600EF600E200D0B751A08AFCF12182FD51A27 -:1001E600F853CEFDE5F830E10D75C701E5CE30E0F8 -:1001F6000553CEFEC20B200703020410E5F820E5E6 -:100206000302041030010302041075C705E5CE543D -:10021600427003020410121DB29001E0EFF090024A -:1002260025E5CFF0E0702F20A302D201E4F51A9065 -:1002360001E0E0FD14FFE51AC39F500E74E2251A93 -:10024600F582E4340112148080E57B017A0179E2BB -:10025600120F120203F1900225E0B40125E4F51A0B -:100266009001E0E014FFE51AC39F500E749D251A15 -:10027600F582E4340112148080E6120FC5C2010231 -:1002860003F1900225E0640260030203F1C201C299 -:1002960000900307E5CFF0E0B4013490022874FA29 -:1002A600F0121C0A121B12D20EE5CF25E09002FEB8 -:1002B600F0900305E5CFF09002FDE5CFF0E4900263 -:1002C60029F0A3F09002FBF0900304F00203AB20A8 -:1002D6000E0812149B7D01FF8011900307E0B40302 -:1002E6001012000612149B7D027F011216080203EB -:1002F600AB900307E0640260030203AB900304E0E3 -:100306007074AFCFEF9002FFF0A3E4F0AFCFE02F11 -:10031600F09002FFE03400F09001E0E0F9B405024D -:10032600803C9002FFE0FEA3E0FFEE547FFC9002CB -:1003360029E06C7003A3E06F6016EF64C07003EEF3 -:10034600641D600C9002FFE0B40E0AA3E0B4C00581 -:10035600E96424600C12149B7D03FF121608120038 -:1003660006E4F51A9001E0E024FCFFE51AC39F506D -:100376002E12146D80EE9001E0E06422600C1214DF -:100386009B7D04FF121608120006E4F51A9001E0A0 -:10039600E024FEFFE51AC39F500512146D80EE900F -:1003A6000304E004F09002FDE0FF900304E0FEB5D4 -:1003B6000726900305E0FD9002FBE0B5051A9002C2 -:1003C6002AE02DF0900229E03400F0E49002FBF0E0 -:1003D600900304F0D2038011EEC39F400C12149BCD -:1003E6007D05FF121608120006C20175C705200218 -:1003F6000CE5CE30E10753CEFDD202800D30020A65 -:10040600E5CE30E60553CEBFC202200503020657ED -:10041600300E4F900228E0600302065720030302C5 -:10042600065778087C037D017B017A0279FE7E00FF -:100436007F0612072890030E7440F01218BB900135 -:100446009AE020E0F99002287414F090019AE0C432 -:1004560013135401FFE490030BF0FBFD121608C2C0 -:10046600032230A30302064FD20C200003020657D4 -:1004760030B420300F1D9001DE7417F0A37470F0B5 -:10048600C211E4F515F514F513C20FC291D210C2CC -:1004960007C209201003020657201103020657E47B -:1004A600F54AC211E514702330130D30010575119C -:1004B6000A8010751102800B300105751108800342 -:1004C600E4F5118511C5751401804DE514B40114C8 -:1004D600E515B41103751402E51130E138121586DD -:1004E6008FC58034E51464027026E515B4150AE557 -:1004F6001130E302C201751403E51130E31074D024 -:100506002515F582E43401F583E0F5C5800A8005FA -:10051600E514B40303E4F5C50515E5137025AFC46A -:10052600BF8003D38001C3400430A3F22285C510E7 -:10053600E5C530E7057512228003751211751301A2 -:1005460002063FE51364017036AFC4BF8003D38053 -:1005560001C3400430A3F222E51030E109D29074C1 -:10056600222515F8A6C5E5122401FFE433FEE5159C -:100576006F7001EE600302063F75130202063FE547 -:10058600136402600302063FAFC4BF8003D3800139 -:10059600C3400430A3F222E51030E347AF127E00D9 -:1005A600EF2405FDEE33FCAB157A00D3EB9DEC642E -:1005B60080F8748098500BC3EB9512FD74442DF8A7 -:1005C600A6C5EF2406FFE43EFEEBB50716EAB50620 -:1005D60012900227E5C5F0E0FF90019CE0C39F5012 -:1005E60002EFF0E5122406FFE433FEE5156F700115 -:1005F600EE7046D207D209C210D291D20FE510543E -:10060600826016E4F51A7424251AF8E6FF1216BC61 -:10061600051AE51AC3951240EDE51030E333E546B9 -:10062600602FE4F51A7446251AF8E6FF121A7805C3 -:100636001AE51AC3940440ED22054A301113E54A1F -:10064600C3940550030204A822300C03121B29C2CE -:010656000C97 -:010657002280 -:06197400C18FC111C1107A -:0E1C7B00E4F514F513D20FD291C210C211225B -:1019390053AFFE43C31043C30253C3F753C3FB431F -:10194900C32043C340D2B2D2B4D291D288D2A8E440 -:07195900F514F513C2002292 -:03000300021DA635 -:031DA600D2113225 -:101C0A00121D8E121D619003027401F0A37406F076 -:011C1A0022A7 -:1018BB0090019AE054BFF0900308E090019BF090E8 -:1018CB000309E0FCA3E0FDEC900104F0A3EDF09024 -:0C18DB00030EE02402900199F0021C5D55 -:1014FC0090018DE0FF04F0748E2FF582E43401F539 -:10150C0083E595F022E0FF04F074042FF582E434B7 -:10151C0001F58322900199E0FF900103E0C39F2223 -:10152C00E0FBA3E0FAA3E0F9EA494B22A3E0FAA31B -:06153C00E0F5828A832223 -:041D8E0075938022A7 -:071D61007593C043B102229B -:0C1CCA00900186EBF0A3EAF0A3E9F02201 -:0C1CD60090018AEBF0A3EAF0A3E9F022F1 -:0F1C5D0090019AE04401F0E4900103F0021D921F -:041D92004393202235 -:0B1CFA0043931090019AE054FEF0228A -:031DA9008F9522F1 -:041D9600439304224D -:041D9A005393FB2242 -:031DAC00AF9522CE -:031DAF00AF9422CC -:03004300020CD9D3 -:100CD900C0E0C0F0C083C082C0D075D008AF94EF27 -:100CE9001208640E25000D3E080D3E100D46180D24 -:100CF90066200D46280D66300D70380D76400D665C -:100D0900480D73500D63580D86600D86680D867009 -:100D19000D86780D9C800DAE880D9C900DAE980DBA -:100D2900B5A00DE1A80DE1B00E08B80D70C00D70A9 -:100D3900C800000E285393DF90019B8008121520EC -:100D4900500B121511E0FF121DA9020E28121CFAF0 -:100D590090019AE04440F0020E281214FC90019A86 -:100D6900E04402F0020E25020E201214FC900189C3 -:100D7900E014FF90018DE0C39F5027802290019AD3 -:100D8900E04401F090018DE4F090019AE054FBF009 -:100D9900020E161214FC90018DE0C3940850030250 -:100DA9000E16020E1B90019AE04404F0121D619088 -:100DB900018612152C601890018DE0FF7B017A01E4 -:100DC900798EC00A900186121538D00A12088E90C1 -:100DD900019AE054FEF0804790018A12152C601A9E -:100DE9007B017A017904C00A90018A121538D00A68 -:100DF9007F8212088E900199EFF0900103E4F09040 -:100E09000103121511E0F5951215205005121D96D2 -:100E1900800D121D9A8008121D618003121CFA535D -:0D0E290093F7D0D0D082D083D0F0D0E0324B -:101AC800AE18AF19C390032AE09FFF900329E09E48 -:091AD800FED3EF94FFEE947F228F -:10176000AC18AD19ED2FFFEC3E900329F0A3EFF07C -:1017700020AF13121AC850047F0080027F01EF705F -:1017800013121D1080ED121AC850047F0080027FD2 -:0417900001EF60F213 -:011794002232 -:1019C300E4F519F518F517F51690032BF0A3F0F5C8 -:0F19D3008A758CF0438901438F02D28CD2A922EE -:0A1D100020AF06308D031213942259 -:03000B0002139449 -:10139400C0E0C0F0C083C082C0D075D000C000C01F -:1013A40004C005C006C007C28D438CF090032B74A3 -:1013B4000C75F04A1207FBFEC3E5F0944AEE940C58 -:1013C400E450047F0380027F02FEFDFCE5192FF543 -:1013D40019E5183EF518E5173DF517E5163CF51621 -:1013E400D007D006D005D004D000D0D0D082D0838E -:0513F400D0F0D0E03252 -:100AB6001201100100000020EB0307FF41000102B4 -:100AC60003010C034B00790073006F0068001203EA -:100AD600540075007800440072006F0069006400DD -:100AE6000C033100300030003000310012030904DD -:100AF60000000000000000000000000000001203DB -:100B0600540075007800440072006F0069006400AC -:100B16001E03540075007800440072006F006900DF -:100B260064002D004D006900630072006F0022030F -:100B3600540075007800440072006F00690064007C -:100B46002D0053007000650061006B0065007200A7 -:100B56001A03540075007800440072006F006900A3 -:100B660064002D005400540053001E035400750009 -:100B76007800440072006F00690064002D00410097 -:100B86007500640069006F000902290106010480EE -:100B9600320904000000010100080A2401000134A2 -:100BA600000201020C2402010102000100000006FD -:100BB6000C240202010100010000050009240303C0 -:100BC60001010001060924030401030002050904CA -:100BD60001000001020006090401010101020006EC -:100BE600072401030102000B240201010108014050 -:100BF6001F0009058101080001000007250100000A -:100C060000000904020000010200050904020101B6 -:100C160001020005072401020102000B2402010162 -:100C2600010801401F000905020108000100000734 -:100C3600250100000000090403000203000000096A -:100C4600211001000122220007058403400001074C -:100C5600050503400001090404000001010007091D -:100C6600240100011E0001050C24020701010001F8 -:100C7600000000070924030801030007070904050B -:100C8600000001020007090405010101020007072F -:100C96002401070102000B24020101010801401F83 -:100CA60000090503010800010000072501000000F6 -:100CB600000600FF0901A1010903150026FF0095A2 -:100CC60040750881020904150026FF009540750845 -:030CD6009102C0C8 -:10132B00E5CFF0A3E5CFF0A3E5CFF0A3E5CFF02217 -:10133B00900308E4F07412A3F09002F574FFF0A38D -:10134B002253CE7F53CEFB43CE102253CEFB43CE44 -:10135B00202253CEFB43CE8022900308E4F0A3223D -:10136B0053CEFD53CE7F229002F5E0FBA3E0FAA310 -:10137B00E0F92253CEDF53CEF72253CEFEE5CE5407 -:09138B004222E4F5CF43CE10220A -:10002600E49002F9F0A3F0A3F0900226F0C2059046 -:0C0036000223F0A3F09001E1F0C20222CE -:101647007D857F01121D687F01121C2C7D817F0221 -:10165700121D687F02121C2C7D817F03121D687F7B -:1016670003121C2C7D877F04121D687F04121C2C1B -:0C1677007D837F05121D687F05021C2C7E -:061D7D00E4F5C7020E367A -:100E36009002F4E5CFF09002F3E5CFF0A3E0546022 -:100E46006003020EC99002F3E024FEB40A00506962 -:100E5600900E6475F003A4C58325F0C58373020E56 -:100E6600BA020EBF020EBF020E8E020E82020EBF25 -:100E7600020E88020E94020EA4020EB5120890020B -:100E86000F0E121A1E020F0E121B40020F0E9002B8 -:100E9600F4E070051210F1806F121AFA806A90025F -:100EA600F4E0B48105121BC3805E12000E80591255 -:100EB60016F48054121A3C804F121356E5CE30E3D6 -:100EC600FB80429002F4E05460642070309002F39C -:100ED600E0247E600F146011146013240370141252 -:100EE60019E28024121A00801F121981801A121921 -:100EF600A28015121356E5CE30E3FB800812135676 -:0C0F0600E5CE30E3FB12137E53CE7F22B9 -:101B4000AFCF12134F43BC01E5CE30E0FB53CEFEC6 -:051B5000EF4480F5C622 -:011B5500226D -:1010F100AFCF53CE7F53CEFBEFD394015055900227 -:1011010026EFF064017058C2819003081208330081 -:10111100007D00900308E0FCA3E0FDA3E0FEA3E056 -:10112100FFEC4D4E4F6018EF24FFFFEE34FFFEED54 -:1011310034FFFDEC34FFFC90030812082780D4D261 -:1011410081C2B3121939121C4D121C3D121D9ED2BF -:1011510000800C43CE20E5CE30E3FB12137E224308 -:10116100CE10E5CE30E0FB53CEFE12164743BC0253 -:01117100225B -:1016F400AFCF900308E5CFF0AECFA3E5CFF053CE44 -:101704007F53CEFBEEB40313EF70109001E1F0C2EF -:10171400027F04121C2C7F05121C2C43CE10E5CE34 -:0617240030E0FB53CEFE95 -:01172A00229C -:10089000C212AFCFAECFEE24FE601E14605424E22D -:1008A000603E146029242160030209BB12133B74CB -:1008B0000AF0A374B6F00209D29003087401F07430 -:1008C0004B121342740BF0A3748EF00209D2121370 -:1008D000647422121343740CF0A374B7F00209D2AB -:1008E0001213647409121343740CF0A37445F002DC -:1008F00009D2EFB4090040030209AC900902F828BC -:10090000287302091D02092A02093C020949020949 -:100910005B02097902096802098A02099B12133BEA -:10092000740AF0A374F2F00209D2121364740C1268 -:100930001343740AF0A374C8F00209D212133B7473 -:100940000AF0A374D4F00209D2121364740C1213C7 -:1009500043740AF0A374E6F00209D212133B740B3D -:10096000F0A37404F00209D2121364741E1213432C -:10097000740BF0A37416F0805912136474221213CE -:1009800043740BF0A37434F08048121364741A1289 -:100990001343740BF0A37456F08037121364741E63 -:1009A000121343740BF0A37470F08026121356E5F3 -:1009B000CE20E314E5CE20E2F6800D121356E5CEEC -:1009C00020E305E5CE20E2F653CEF753CEDF53CE3B -:1009D0007F22E5CFE5CF90030BE5CFF090030AE54A -:1009E000CFF0900308E0FEA3E0FFA3E0FCA3E0FD4E -:1009F000D39FEC9E400DEF541F7004D212800CC2A6 -:100A0000128008900308ECF0A3EDF012135DD39070 -:100A10000309E09420900308E09400402812137228 -:100A20007D20120AA7900309E024E0F0900308E07B -:100A300034FFF0E5CE54427005E5CE30E0F51213F8 -:100A40008560CB8040121372900308A3E0FD120A68 -:100A5000A7E4900308F0A3F0E5CE54427005E5CE7C -:100A600030E0F51213856002801B30121D121372E4 -:100A7000E4FD121BE7E5CE54427005E5CE30E0F50B -:100A8000121385600553CEEF8019E5CE54427005F0 -:100A9000E5CE30E2F5E5CE20E20CE5CE544260062C -:060AA00053CE7F53CEFD92 -:100AA60022121BE79002F5EBF0A3EAF0A3E9F0228D -:1019E20090030812132B12135D12138DE5CE30E013 -:0D19F200FB53CEFEE5CE544260FA12136B9B -:0119FF0022C5 -:101A000090030812132B12135D12138DE5CE30E0F4 -:0D1A1000FB53CEFEE5CE544260FA12136B7C -:011A1D0022A6 -:1019810090030812132B12135D75CF0A43CE10E595 -:10199100CE30E0FB53CEFEE5CE544260FA12136B1B -:0119A1002223 -:1019A20090030812132B12135D75CF0143CE10E57D -:1019B200CE30E0FB53CEFEE5CE544260FA12136BFA -:0119C2002202 -:101B7B0090030F12132B12134CE5CE30E0FB53CE18 -:011B8B00FE5B -:011B8C002236 -:101B8D0090031312132B12134CE5CE30E0FB53CE02 -:011B9D00FE49 -:011B9E002224 -:101B9F0090031712132B12134CE5CE30E0FB53CEEC -:011BAF00FE37 -:011BB0002212 -:101BB10090031B12132B12134CE5CE30E0FB53CED6 -:011BC100FE25 -:011BC2002200 -:101A1E0012135D900226E0F5CF43CE10E5CE30E0F6 -:0E1A2E00FB53CEFEE5CE544260FA12136B223B -:101BC30012135D43CE20E5CE30E3FB12137E53CEDA -:021BD3007F226F -:1014AC00E5CFE5CFAFCF12135D9002F4E0247F605F -:1014BC000C14600E2402701975CF018014E4F5CF62 -:1014CC00800FEF547F24F8F582E43402F583E0F5C5 -:1014DC00CF12138DE5CE30E0FBE5CE20E2F653CEF5 -:0F14EC00FEE5CE544260FAE5CE20E2F512136B16 +:0215AA00C10C72 +:1013DD00438F01C281D2A3D2AF120E731200063019 +:1013ED000B05120FD980F520A307D20C12048F80A4 +:0D13FD00EB300C031214B0D201C20C80DFE3 +:0C184F00C8040401C9000004CA00000025 +:100E730090011612080B0000271012194E43BC8074 +:100E830043BC10900116E0FCA3E0FDA3E0FEA3E049 +:100E9300FFEC4D4E4F601E900116A3A3A3E024FF69 +:100EA300FFEE34FFFEED34FFFDEC34FFFC90011642 +:100EB3001207FF80CE53BCEF7D80E4FF121947E495 +:0F0EC300FF1217F91216A453F1FC43F101D2B339 +:010ED20022FD +:10000600E5BD30E5051218358012E5BD30E4051270 +:1000160018FC8008E5BD30E0031218F3E5BD30E3B7 +:100026000E53BDF7120F319000F0E0600214F0128B +:0D0036001436120E0AE5F860031211712253 +:10026C001201100100000020EB0307FF4100010206 +:10027C0003010C034B00790073006F00680012033C +:10028C00540075007800440072006F00690064002F +:10029C000C0331003000300030003100120309042F +:1002AC00000000000000000000000000000012032D +:1002BC00540075007800440072006F0069006400FF +:1002CC001E03540075007800440072006F00690032 +:1002DC0064002D004D006900630072006F00220362 +:1002EC00540075007800440072006F0069006400CF +:1002FC002D0053007000650061006B0065007200FA +:10030C001A03540075007800440072006F006900F5 +:10031C0064002D005400540053001E03540075005B +:10032C007800440072006F00690064002D004100E9 +:10033C007500640069006F00090229010601048040 +:10034C00320904000000010100080A2401000134F4 +:10035C00000201020C24020101020001000000064F +:10036C000C24020201010001000005000924030312 +:10037C00010100010609240304010300020509041C +:10038C00010000010200060904010101010200063E +:10039C00072401030102000B2402010101080140A2 +:1003AC001F0009058101080001000007250100005C +:1003BC000000090402000001020005090402010109 +:1003CC0001020005072401020102000B24020101B5 +:1003DC00010801401F000905020108000100000787 +:1003EC0025010000000009040300020300000009BD +:1003FC00211001000122220007058403400001079F +:10040C00050503400001090404000001010007096F +:10041C00240100011E0001050C240207010100014A +:10042C00000000070924030801030007070904055D +:10043C000000010200070904050101010200070781 +:10044C002401070102000B24020101010801401FD5 +:10045C000009050301080001000007250100000048 +:10046C00000600FF0901A1010903150026FF0095F4 +:10047C0040750881020904150026FF009540750897 +:03048C009102C01A +:0415AC004100FA0000 +:100DA100E5CFF0A3E5CFF0A3E5CFF0A3E5CFF022A7 +:100DB100900116E4F07412A3F09000FC74FFF0A30C +:100DC1002253CE7F53CEFB43CE102253CEFB43CED4 +:100DD100202253CEFB43CE8022900116E4F0A322C1 +:100DE10053CEFD53CE7F229000FCE0FBA3E0FAA39B +:100DF100E0F92253CEDF53CEF72253CEFEE5CE5497 +:090E01004222E4F5CF43CE102299 +:1016A400E4900100F0A3F0A3F09000FAF09001326E +:0616B400F0900131F0226C +:10122C007D857F011219477F011217F97D817F029D +:10123C001219477F021217F97D817F031219477F1C +:10124C00031217F97D877F041219477F041217F9CF +:0C125C007D837F051219477F050217F9FA +:06195C00E4F5C70209C515 +:1009C5009000FBE5CFF09000F9E5CFF09000FBE05B +:1009D50054606003020A5A9000F9E024FEB40A004C +:1009E50050699009F575F003A4C58325F0C5837397 +:1009F500020A4B020A50020A50020A1F020A130297 +:100A05000A50020A19020A25020A35020A4612008C +:100A150046020A9F121606020A9F1216BA020A9F7A +:100A25009000FBE07005120C52806F121675806AFB +:100A35009000FBE0B4810512177E805E12171080CE +:100A4500591217248054121624804F120DCCE5CE6E +:100A550030E3FB80429000FBE054606420703090EE +:100A650000F9E0247E600F146011146013240370F4 +:100A7500141215CA80241215E8801F121568801AF1 +:100A85001215898015120DCCE5CE30E3FB800812D6 +:0E0A95000DCCE5CE30E3FB120DF453CE7F22E4 +:1016BA00AFCF120DC543BC01E5CE30E0FB53CEFEE1 +:0516CA00EF4480F5C6AD +:0116CF0022F8 +:100C5200AFCF53CE7F53CEFBEFD39401504B9000D6 +:100C6200FAEFF06401704EC28190011612080B0077 +:100C7200007D00900116E0FCA3E0FDA3E0FEA3E0EE +:100C8200FFEC4D4E4F6018EF24FFFFEE34FFFEEDF8 +:100C920034FFFDEC34FFFC9001161207FF80D4D222 +:100CA200811214FC121977800C43CE20E5CE30E37A +:100CB200FB120DF42243CE10E5CE30E0FB53CEFE04 +:060CC20012122C43BC02DB +:010CC8002209 +:10172400900116120DA1120DC2E5CE30E0FB53CE8E +:01173400FEB6 +:011735002291 +:10004600C20DAFCFAECFEE24FE601E14605424E284 +:10005600603E14602924216003020171120DB174FF +:1000660002F0A3746CF00201889001167401F0741A +:100076004B120DB87403F0A37444F0020188120DFC +:10008600DA7422120DB97404F0A3746DF0020188BB +:10009600120DDA7409120DB97403F0A374FBF002A1 +:1000A6000188EFB4090040030201629000B8F82805 +:1000B60028730200D30200E00200F20200FF0201F0 +:1000C6001102012F02011E020140020151120DB15F +:1000D6007402F0A374A8F0020188120DDA740C12EF +:1000E6000DB97402F0A3747EF0020188120DB1748A +:1000F60002F0A3748AF0020188120DDA740C120D54 +:10010600B97402F0A3749CF0020188120DB1740256 +:10011600F0A374BAF0020188120DDA741E120DB93A +:100126007402F0A374CCF08059120DDA7422120D09 +:10013600B97402F0A374EAF08048120DDA741A1248 +:100146000DB97403F0A3740CF08037120DDA741E27 +:10015600120DB97403F0A37426F08026120DCCE5B7 +:10016600CE20E314E5CE20E2F6800D120DCCE5CECE +:1001760020E305E5CE20E2F653CEF753CEDF53CE8D +:100186007F22E5CFE5CF900119E5CFF0900118E584 +:10019600CFF0900116E0FEA3E0FFA3E0FCA3E0FD94 +:1001A600D39FEC9E400DEF541F7004D20D800CC2FD +:1001B6000D8008900116ECF0A3EDF0120DD3D3904C +:1001C6000117E09420900116E094004028120DE8F3 +:1001D6007D2012025D900117E024E0F0900116E008 +:1001E60034FFF0E5CE54427005E5CE30E0F5120D51 +:1001F600FB60CB8040120DE8900116A3E0FD1202D1 +:100206005DE4900116F0A3F0E5CE54427005E5CE0C +:1002160030E0F5120DFB6002801B300D1D120DE85B +:10022600E4FD1217B4E5CE54427005E5CE30E0F594 +:10023600120DFB600553CEEF8019E5CE54427005D2 +:10024600E5CE30E2F5E5CE20E20CE5CE544260067E +:0602560053CE7F53CEFDE4 +:10025C00221217B49000FCEBF0A3EAF0A3E9F02211 +:1015CA00900116120DA1120DD3120E03E5CE30E0D2 +:0D15DA00FB53CEFEE5CE544260FA120DE147 +:0115E70022E1 +:1015E800900116120DA1120DD3120E03E5CE30E0B4 +:0D15F800FB53CEFEE5CE544260FA120DE129 +:0116050022C2 +:10156800900116120DA1120DD375CF0A43CE10E5C6 +:10157800CE30E0FB53CEFEE5CE544260FA120DE1C8 +:011588002240 +:10158900900116120DA1120DD375CF0143CE10E5AE +:10159900CE30E0FB53CEFEE5CE544260FA120DE1A7 +:0115A900221F +:1017360090011D120DA1120DC2E5CE30E0FB53CE75 +:01174600FEA4 +:01174700227F +:10174800900121120DA1120DC2E5CE30E0FB53CE5F +:01175800FE92 +:01175900226D +:10175A00900125120DA1120DC2E5CE30E0FB53CE49 +:01176A00FE80 +:01176B00225B +:10176C00900129120DA1120DC2E5CE30E0FB53CE33 +:01177C00FE6E +:01177D002249 +:10160600120DD39000FAE0F5CF43CE10E5CE30E0D0 +:0E161600FB53CEFEE5CE544260FA120DE122E7 +:10177E00120DD343CE20E5CE30E3FB120DF453CE43 +:02178E007F22B8 +:100F8900E5CFE5CFAFCF120DD39000FBE0247F6012 +:100F99000C14600E2402701975CF018014E4F5CF8A +:100FA900800FEF547F24FFF582E43400F583E0F5E8 +:100FB900CF120E03E5CE30E0FBE5CE20E2F653CEAC +:0F0FC900FEE5CE544260FAE5CE20E2F5120DE1CE +:010FD80022F6 +:100ED3009000FBE0700B120DCCE5CE30E3FB53CE5C +:100EE300DF9000FBE0B4010B120DCCE5CE30E3FB49 +:100EF30053CEDF9000FBE064027032E5CF702EE545 +:100F0300CFAFCFEF247F701A75C70143CE20E4F52E +:100F1300C790010004F0120DC5E5CE30E0FB53CEBF +:0E0F2300FE22120DCCE5CE30E3FB120DF422BF +:100CC9009000FBE0700B120DCCE5CE30E3FB53CE68 +:100CD900DF9000FBE0B4010B120DCCE5CE30E3FB55 +:100CE90053CEDF9000FBE064027042E5CF703EE531 +:100CF900CFAFCFEF6020247F702875C70153CEDFB7 +:100D09007F011217F9E4F5C7900100F0120DC5E54E +:100D1900CE30E0FB8008120DC5E5CE30E0FB53CEA6 +:0E0D2900FE22120DCCE5CE30E3FB53CEDF22CE +:1016750053CEFBE5CE544260FA53CEFD43CE10E582 +:08168500CE30E0FB53CEFE2243 +:10171000E5CF9000F8E5CFF0120DC5E5CE30E0FB47 +:0417200053CEFE2284 +:10162400120DD39000F8E0F5CF43CE10E5CE30E0B4 +:0E163400FB53CEFEE5CE544260FA120DE122C9 +:0615B000C107C108C106DD +:10117100E5F830E00BE4F5C7E5CE30E20312195C87 +:10118100E5F830E3031216E6E5F830E2031216FB48 +:10119100E5F830E103121819E5F830E509300106E8 +:0F11A1001211B0121313E5F830E40312154522B2 +:10179000900132E0600B75C704E5CE20E40343CE30 +:0217A000102215 +:0C1436009000FAE06022300F1F20061C1E +:1014420075C7019001167408F01210AF8FCF90018A +:0C14520016E014F0E070F243CE10D20659 +:01145E00226B +:0E18190075C701E5CE30E00553CEFEC20622B3 +:1016E60075C70330070B12198BEF60057F081213BD +:0516F6004853CEFD2267 +:1016FB0075C70220070B12198BEF60057F081213B9 +:05170B004853CEFD2251 +:1013130075C705900131E0FF700CE5CE30E107534E +:10132300CEFD7401F022EFB4010EE5CE30E6095391 +:10133300CEBFE4900131F022E5CE30E60453CEBFB8 +:051343002253CEFD2243 +:1015450075C704E5CE30E01A53CEFE900132E014A3 +:10155500F0E0C394005002E4F0900132E0600343F0 +:03156500CE102283 +:1011B00075C705E5CE5442603512198BEF149000C7 +:1011C000EFF0AFCFE4FE9000EFE0FDEEC39D5009DD +:1011D00074272EF8A6CF0E80EDEF600A24FE600B78 +:0E11E00004700B021268C2010216D0120BD26C +:0111EE0022DE +:101268007827E6B40121782AE62403600D14600F7C +:10127800146011147011D208800D1214B080081275 +:1012880017A280031215217827E6B4020C08E6603D +:0A12980006147005D20722C20722D7 +:100E0A00300865900132E0C39402505C75C704E46F +:100E1A00F5CF30A303FF80027F018FCF90010EE050 +:100E2A00F5CFE51660071313543FFF80027F008F4A +:100E3A00CFE4F519E519C3951650091218CB8FCFCF +:100E4A00051980F0851619E519C3943C5007E4F595 +:100E5A00CF051980F212197B900132E004F01217C3 +:080E6A0090E490010EF0C208B3 +:010E7200225D +:1014880075C70475CFF0EF60047F0080027F018F7D +:10149800CFAF058FCFAF038FCF90011AE0F5CF9074 +:0814A8000132E004F00217908C +:1016D000E4FFD20474272FF8E6FE74232FF8A60641 +:0516E0000FEFB404EF60 +:0116E50022E2 +:1017A200E4F5A8F5B175C314C2811211EFD2B302E8 +:0217B2001920FC +:10152100E4F5A8F5B175C314D2B3C281FD7F4012B1 +:1015310013AF7B017DF47F041216421211EF1219D1 +:041541003802192033 +:0918F30053BDFE43BC40C281223A +:0D18350053BCBF53BDFE53BDDF53BDF722B2 +:0918FC0053BDEF1216A402197786 +:1011EF0090011612080B0000271043BC1090011637 +:1011FF00E0FCA3E0FDA3E0FEA3E0FFEC4D4E4F604B +:10120F0018EF24FFFFEE34FFFEED34FFFDEC34FF4B +:0C121F00FC9001161207FF80D453BCEFB6 +:01122B0022A0 +:0815B600C180C182C105C1031F +:0A18AD00E4900113F0900112F02204 +:0E1827001218ADD202D291C203C205D2012224 +:1014FC0053AFFE43C31043C30253C3F753C3FB4361 +:10150C00C32043C340D2B2D2B4D291D288D2A81253 +:05151C0018ADD2012210 +:0300030002197F60 +:03197F00D205325C +:10048F002000030206B130B410C205E4900114F04D +:10049F001218AEC202C291D2032003030206B1208A +:1004AF0005030206B1E4900116F0C205900113E0B6 +:1004BF00FF702A300E0E900110300404740A80125F +:1004CF007402800E30040790011074088004E490C9 +:1004DF000110F0F5C59001137401F08056EFB401CF +:1004EF001B900114E0B411069001137402F09001F7 +:1004FF0010E030E13B12137D8FC58037900113E080 +:10050F00FF64027027A3E0FEB4150F900110E030D6 +:10051F00E302C2049001137403F0900110E030E382 +:10052F000974112EF8E6F5C580098004EFB40303B2 +:10053F00E4F5C5900114E004F0900112E0FF703073 +:10054F00AEC4BE8003D38001C350F530A3030206AF +:10055F00B190010FE5C5F0E5C590011130E70574C5 +:10056F0022F080037411F09001127401F002069FC3 +:10057F00EF6401704AAFC4BF8003D38001C350F54D +:10058F0030A3030206B190010FE030E112D2909038 +:10059F000114E024CBF582E43400F583E5C5F09037 +:1005AF000111E02401FFE433FE900114E06F7001AC +:1005BF00EE600302069F9001127402F002069F90F4 +:1005CF000112E06402600302069FAFC4BF8003D331 +:1005DF008001C350F530A3030206B190010FE0F97B +:1005EF0030E357900111E0FF2405FDE433FC900147 +:1005FF0014E0FB7A00D39DEC6480F874809850155A +:10060F00C3EB9FFFEA9400FE74162FF58274013E30 +:10061F00F583E5C5F0900111E02406FFE433FE9069 +:10062F000114E0B50714E4B50610A3E5C5F0E0FF2B +:10063F0090010EE0C39F5002EFF0900111E0FF24F4 +:10064F0006FDE433FC900114E06D7001EC7041D2B3 +:10065F0001C203D291D202E9548260031210229098 +:10066F00010FE030E33C900118E06036E490011791 +:10067F00F0900117E02418F582E43401F583E0FFD0 +:10068F0012168D900117E004F0E0C3940440E222AB +:10069F00900116E004F0300509E0C3940550030201 +:0206AF0004B98C +:0106B1002226 +:1012DB0074272EF8E6FF900102E0FE04F09001085F +:1012EB00E0FCA3E02EF582E43CF583EFF0900116D1 +:1012FB00E004F022E490011AF0FB229000EFE0FFF3 +:08130B00900116E0FEC39F22D1 +:100BD200C2007827E6B40105121131802F200B0ED6 +:100BE2001212FF7D01FF121488121897801E7827B7 +:100BF200E6B4030F1218971212FF7D027F0112143E +:100C02008880097827E6B40203120AA3900103E060 +:100C1200FF90010AE0FEB5072590010DE0FD90016D +:100C220002E0B5051990010CE02DF090010BE034C3 +:100C320000F0E4900102F090010AF0D20922EEC322 +:100C42009F400C1212FF7D05FF1214881218972282 +:100FD9009000F0E0704230093F78167C017D017B7A +:100FE900017A0179047E007F0612078290011C7440 +:100FF90040F012140A900097E020E0F99000F07494 +:1010090014F0900097E0C413135401FFE490011AFF +:09101900F0FBFD121488C209224B +:100AA30090010AE070727828E6900105F0A3E4F063 +:100AB30008E6FFE02FF0900105E03400F09000EF2E +:100AC300E0B40402803F900105E0FEA3E0FFEE5492 +:100AD3007FFC90010BE06C7003A3E06F6016EF6482 +:100AE300C07003EE641D600C900105E0B40E0DA30D +:100AF300E0B4C0089000EFE06423600C1212FF7DA5 +:100B030003FF1214881218979001167403F012133E +:100B13000650291212DB80F69000EFE06421600C8E +:100B23001212FF7D04FF1214881218979001167495 +:100B330001F012130650051212DB80F690010AE051 +:020B430004F0BC +:010B4500228D +:101131009000F074FAF01217C61214D67828E6253A +:10114100E0900104F008E690010DF008E69001033B +:10115100F0E490010BF0A3F0900102F090010AF08D +:10116100D20BC2A890011AF0FB7D017F0102148805 +:0B189700C20B1214B0121827D200225E +:1017C6001219671219409001087400F0A37403F00F +:0117D60022F0 +:10140A00900097E054BFF0900116E0900098F09099 +:10141A000117E0FCA3E0FDEC900001F0A3EDF090D1 +:0C142A00011CE02402900096F002180A59 +:1010690090008AE0FF04F0748B2FF582E43400F5D8 +:1010790083E595F022E0FF04F074012FF582E43452 +:1010890000F58322900096E0FF900000E0C39F22C4 +:10109900E0FBA3E0FAA3E0F9EA494B22A3E0FAA3B3 +:0610A900E0F5828A8322BB +:0419670075938022D2 +:071940007593C043B10222C0 +:0C185B00900083EBF0A3EAF0A3E9F02278 +:0C186700900087EBF0A3EAF0A3E9F02268 +:0F180A00900097E04401F0E4900000F002196BA9 +:04196B004393202260 +:0B18A200439310900097E054FEF022EA +:031982008F95221C +:04196F004393042278 +:041973005393FB226D +:03198500AF9522F9 +:03198800AF9422F7 +:0300430002086848 +:10086800C0E0C0F0C083C082C0D075D008AF94EF9C +:1008780012083C09B40008CD0808CD1008D518089E +:10088800F52008D52808F53008FF3809054008F58F +:100898004809025008F258091560091568091570C9 +:1008A800091578092B80093D88092B90093D98097D +:1008B80044A00970A80970B00997B808FFC008FFDC +:1008C800C8000009B75393DF900098800812108D74 +:1008D800500B12107EE0FF1219820209B71218A2FB +:1008E800900097E04440F00209B712106990009711 +:1008F800E04402F00209B40209AF121069900086C0 +:10090800E014FF90008AE0C39F5027802290009750 +:10091800E04401F090008AE4F0900097E054FBF086 +:100928000209A512106990008AE0C39408500302D6 +:1009380009A50209AA900097E04404F01219409012 +:100948000083121099601890008AE0FF7B017A00FA +:10095800798BC00A9000831210A5D00A12086690FD +:100968000097E054FEF08047900087121099601AB3 +:100978007B017A007901C00A9000871210A5D00A7D +:100988007F82120866900096EFF0900000E4F090E5 +:10099800000012107EE0F59512108D500512196FA7 +:1009A800800D121973800812194080031218A2537F +:0D09B80093F7D0D0D082D083D0F0D0E032C1 +:0215BE00C10E5C +:0A18B700E4F512F511F510C20E223F +:101348000512E512C394204002D20EE512B434030C +:10135800151222AECFEE700974A32510F87601801D +:101368000774A32510F8A6060510E510B43403E4A5 +:04137800F510DFCCC1 +:01137C00224E +:10137D00E512C394105002C20EE5127011E5117002 +:10138D000578D6E6FF2274A22511F8E6FF22151284 +:10139D0074A32511F8E6FF0511E511B43403E4F546 +:0113AD00112E +:0113AE00221C +:0215C000C10F59 +:0A18C100E4F515F514F513C20F222B +:101022008F190515E515C394204002D20FE515B4BA +:101032003303151522E519FDEFC39DFDE49400FC71 +:1010420074CD2DF58274003CF583E0FE749925136E +:10105200F582E43400F583EEF00513E513B43403AE +:06106200E4F513D519BCF2 +:011068002265 +:1010AF00E5157002C20FE515701AE5147005900072 +:1010BF00CC800B74982514F582E43400F583E0F5A9 +:1010CF0019AF1922151574992514F582E43400F51A +:1010DF0083E0F5190514E514B43403E4F514AF19DE +:0110EF0022DE +:0215C200C11056 +:0A18D500E4F518F517F516C210220D +:041977001218D5224B +:04197B001218D52247 +:10168D0030100312197B74672516F8A6070516E5A9 +:07169D0016B43C02D210223A +:0918CB0074672517F8E6FF051704 +:0118D40022F1 +:1017D700E0FEA3E0FFE4FCFDFB7AFAF9F8D3020789 +:0117E700E918 +:1014B000D291C281E4900117F0A3F09001171217A6 +:1014C000D74010900118E004F070F0900117E0048C +:0514D000F080E8D2816C +:0114D50022F4 +:1014D600C291C281E4900116F0A3F0900116121792 +:1014E600D74010900117E004F070F0900116E00468 +:0514F600F080E8D28146 :0114FB0022CE -:1013F9009002F4E0700B121356E5CE30E3FB53CEA6 -:10140900DF9002F4E0B4010B121356E5CE30E3FB92 -:1014190053CEDF9002F4E064027032E5CF702EE51E -:10142900CFAFCFEF247F701A75C70143CE20E4F503 -:10143900C79002F904F012134FE5CE30E0FB53CE0A -:0E144900FE22121356E5CE30E3FB12137E2274 -:1011E6009002F4E0700B121356E5CE30E3FB53CEBB -:1011F600DF9002F4E0B4010B121356E5CE30E3FBA8 -:1012060053CEDF9002F4E064027042E5CF703EE513 -:10121600CFAFCFEF6020247F702875C70153CEDF94 -:101226007F01121C2CE4F5C79002F9F012134FE56A -:10123600CE30E0FB800812134FE5CE30E0FB53CEF4 -:0E124600FE22121356E5CE30E3FB53CEDF221C -:101AFA0053CEFBE5CE544260FA53CEFD43CE10E5F9 -:081B0A00CE30E0FB53CEFE22B9 -:10000E00E5CF9002F2E5CFF012134FE5CE30E0FBD4 -:04001E0053CEFE229D -:101A3C0012135D9002F2E0F5CF43CE10E5CE30E00C -:0E1A4C00FB53CEFEE5CE544260FA12136B221D -:02197A00C11397 -:101A5A00E024B3F582E43402F583229002B1E00473 -:0E1A6A00F0E0FEC39420229002B1E014F022BE -:101C3D00E49002B1F09002B0F09002AFF0C2132226 -:101795007F08121A654002D213EEB43804121A718A -:1017A50022AECFEE9002AF7008121A5A7401F08083 -:1017B50005121A5AEEF09002AFE004F0E0B43802D8 -:0417C500E4F0DFCE9F -:0117C90022FD -:10182F00121A654002D213EEB43804121A7122EF65 -:10183F009002AF7008121A5A7401F08005121A5AEA -:0E184F00EFF09002AFE004F0E0B43802E4F0F5 -:01185D002268 -:101586009002B1E0FEC394105002C213EE701A909E -:1015960002B0E0FE70069002EAE0FF2274B22EF579 -:1015A60082E43402F583E0FF22121A719002B0122F -:1015B6001A5AE0FF9002B0E004F0E0B43802E4F01A -:0115C6002202 -:02197C00C11494 -:0B1D0500E02403F582E43400F58322A3 -:101C4D00E4900002F0900001F0900000F0C2142228 -:1016BC00900002E004F0E0FEC394804002D214EEED -:1016CC00FD7C00BC010ABD0107900002E014F02271 -:1016DC00900000121D05EFF0900000E004F0E0B463 -:0816EC000005E4B40101F02245 -:10154200900002E0FE7002C214EE701A900001E0F8 -:10155200FE7006900102E0FF2274022EF582E4344E -:1015620000F583E0FF22900002E014F090000112E7 -:101572001D05E0FF900001E004F0E0B40005E4B4D2 -:031582000101F074 -:011585002243 -:1017FD00E0FBA3E0FAA3E0F9900040120767FF9029 -:10180D0000410207679000417401120794E92441D9 -:10181D00F9E43AFA12074E543F0207C7900040020E -:02182D0007674B -:0E1C8900900040E41207D9900041E40207D910 -:101B560012182904543F12180BB507047F0180029E -:031B66007F0022DB -:0D1C9700121805B507047F0180027F0022AE -:0D1CA40012180CFF121829C39F543FFF2295 -:0818E70090032DECF0A3EDF0DD -:1018EF0012182904543F12180B6F6014900040EF28 -:1018FF001207D990032DA3E08F827583001207D9A9 -:01190F0022B5 -:1017CA00900323EBF0A3EAF0A3E9F09003231217A6 -:1017DA00FD6F601C121812900323E0FBA3E0FAA32A -:1017EA00E0F912180CF5827583001207677F002250 -:0317FA007F01224A -:10185E00900326EBF0A3EAF0A3E9F090032612170B -:10186E00FD6F6003121812900326E0FBA3E0FAA3AB -:0F187E00E0F912180CF582758300120767FF223C -:101BD50012180C5405FFB40308121CA4900332EF2D -:011BE500F00F -:011BE60022DC -:02197E00C11591 -:101A9300E4900272F0900271F0900270F0C215228D -:0B1AA300E02473F582E43402F5832296 -:061D8300A215E433FF226B -:041D9E00121A932260 -:041DA200121A93225C -:101A7800301503121DA2900270121AA3EFF0900203 -:0B1A880070E004F0E0B43C02D2152234 -:0E1C6C00900271121AA3E0FF900271E004F0E2 -:011C7A002247 -:0D1CB10012074EF5CF740129F9E43AFA222A -:071D68008FC7AF058FD422E5 -:1016830030F805E4F5C7802E30F90575C7018026CB -:1016930030FA0575C702801E30FB0575C703801637 -:1016A30030FC0575C704800E30FD0575C70580063F -:0916B30030FE0375C706AFC72223 -:031DB200AFE2227B -:091D2E00AFE3EFFEADE2EDFF2290 -:101BE700E4F5C7AF051DEF6005121CB180F543CEC4 -:021BF7001022BA -:0C1CE200AF051DEF6005121CB180F5225B -:101C1B00AF051DEF600AE5CF1207C7121CB680F0A7 -:011C2B002296 -:091D37008FC7E4F5CE43CE202253 -:101C2C007401A807088002C333D8FCF5D5E4F5D5B8 -:011C3C002285 -:071D6F0075A41043A302223A -:071D7600121D6F43BC802227 -:1019100041746D656C202852290A63353133312DAD -:101920007573622D6364632D315F305F320A0A0084 -:091930001B631B5B3F32356C00A8 -:0B15C70090031FEBF0A3EAF0A3E9F093 -:1015D20090031FE0FBA3E475F001120811A9F0FAD1 -:1015E20012074E900322F06013E0B40A057F0D1239 -:1015F2001D49900322E0FF121D4980D47F0D121D68 -:06160200497F0A021D49A8 -:091D40007BFF7A1979300215C706 -:1012C100900330EDF090032FEFF070097F0D121DA8 -:1012D100497F0A80377F1B121D497F5B121D499090 -:1012E1000330E0FFD39409400312131F900330121F -:1012F10013117F3B121D4990032FE0FFD394094046 -:101301000312131F90032F1213117F48121D49223C -:10131100E075F00A84E5F02430FF121D4922EF75D3 -:0A132100F00A842430FF121D492257 -:051D8900A29892162251 -:101AE100759840538FF7438F0175CBFF75CAF37516 -:091AF100C834D2CA439812D32272 -:081D49003099FDC2998F992227 -:071D51003098FDAF99C29824 -:011D58002268 -:0A1D1A008FC5E5C430E7FB7F01220E -:0A1D240043A22012FFC053A2DF22E9 -:0C1CEE008F1CAF058F1F121D24AF1D229C -:101AAE00A2AF9217C2AF8F1CAF038F1FAF058F1D52 -:091ABE00121D24A21792AF7F0152 -:011AC70022FC -:08188D0090030CEFF0A3EDF055 -:10189500A2AF9217C2AFE4FD7F08121CEE90030CB5 -:1018A500E0F45FFFA3E04FF51D751C07121D24A290 -:0518B5001792AF7F0156 -:0118BA00220B -:081D5900C2AF43A22002F40016 -:0300000002106586 -:0C106500787FE4F6D8FD75814A0210ACDB -:10065800E709F608DFFA8046E709F208DFFA803E84 -:1006680088828C83E709F0A3DFFA8032E309F60871 -:10067800DFFA8078E309F208DFFA807088828C83D9 -:10068800E309F0A3DFFA806489828A83E0A3F6088D -:10069800DFFA805889828A83E0A3F208DFFA804C67 -:1006A80080D280FA80C680D4806980F2803380103E -:1006B80080A680EA809A80A880DA80E280CA8033A7 -:1006C80089828A83ECFAE493A3C8C582C8CCC5831F -:1006D800CCF0A3C8C582C8CCC583CCDFE9DEE780EF -:1006E8000D89828A83E493A3F608DFF9ECFAA9F06E -:1006F800EDFB2289828A83ECFAE0A3C8C582C8CCC4 -:10070800C583CCF0A3C8C582C8CCC583CCDFEADEDC -:10071800E880DB89828A83E493A3F208DFF980CC3E -:1007280088F0EF60010E4E60C388F0ED2402B40437 -:100738000050B9F582EB2402B4040050AF232345DE -:0607480082239006A87355 -:10074E00BB010689828A83E0225002E722BBFE02A9 -:09075E00E32289828A83E49322DC -:10076700BB010CE58229F582E5833AF583E0225047 -:1007770006E92582F8E622BBFE06E92582F8E22291 -:0D078700E58229F582E5833AF583E49322AB -:10079400BB010FF8E58229F582E5833AF583E02869 -:1007A400F0225009C58229F8E58226F622BBFE090B -:1007B400C58229F8E22582F222F8EA2583F583E945 -:0307C40093282255 -:1007C700BB010689828A83F0225002F722BBFE0111 -:0207D700F3220B -:1007D900F8BB010DE58229F582E5833AF583E8F056 -:1007E900225006E92582C8F622BBFE05E92582C802 -:0207F900F222EA -:1007FB00C5F0F8A3E028F0C5F0F8E5821582700289 -:06080B001583E038F02225 -:10081100A3F8E0C5F025F0F0E5821582700215839A -:06082100E0C838F0E822F7 -:0C082700ECF0A3EDF0A3EEF0A3EFF02244 -:10083300A8828583F0D083D08212084A12084A1214 -:10084300084A12084AE473E493A3C583C5F0C58339 -:10085300C8C582C8F0A3C583C5F0C583C8C582C80F -:010863002272 -:10086400D083D082F8E4937012740193700DA3A323 -:1008740093F8740193F5828883E473740293686037 -:06088400EFA3A3A380DF37 -:06088A008A838982E473F9 -:10107100021BF9E493A3F8E493A34003F68001F281 -:1010810008DFF48029E493A3F85407240CC8C33380 -:10109100C4540F4420C8834004F456800146F6DF4F -:1010A100E4800B0102040810204080901960E47E66 -:1010B100019360BCA3FF543F30E509541FFEE49344 -:1010C100A360010ECF54C025E060A840B8E493A30B -:1010D100FAE493A3F8E493A3C8C582C8CAC583CA36 -:1010E100F0A3C8C582C8CAC583CADFE9DEE780BEEE -:011980000066 +:0515C4004201330000AC +:0C187300900133E0FEA3E0FF64014E2270 +:100F3100900134E004F07006900133E004F030A336 +:100F41001D1218737003D2B322E4B50707EEB40380 +:100F510003C2B322EF7003EE6404702B80231218D6 +:100F6100737003D2B322EF64104E7003C2B322EF49 +:100F710064204E7002800AD3EF9420EE9400400763 +:080F8100E4900133F0A3F0221B +:0819200075A61E75A6E180FE0C +:0D1842001207A8F5CF740129F9E43AFA2243 +:071947008FC7AF058FD4220A +:1012A20030F805E4F5C7802E30F90575C7018026B0 +:1012B20030FA0575C702801E30FB0575C70380161C +:1012C20030FC0575C704800E30FD0575C705800624 +:0912D20030FE0375C706AFC72208 +:03198B00AFE222A6 +:09190500AFE3EFFEADE2EDFF22BD +:1017B400E4F5C7AF051DEF600512184280F543CE6E +:0217C4001022F1 +:0C187F00AF051DEF600512184280F52235 +:1017E800AF051DEF600AE5CF1207C112184780F058 +:0117F80022CE +:09190E008FC7E4F5CE43CE202280 +:1017F9007401A807088002C333D8FCF5D5E4F5D5F0 +:0118090022BC +:07194E0075A41043A302225F +:0719550012194E43BC802271 +:10145F0041746D656C202852290A63353133312D63 +:10146F007573622D6364632D315F305F320A0A003A +:09147F001B631B5B3F32356C005E +:0B10F00090012DEBF0A3EAF0A3E9F063 +:1010FB0090012DE0FBA3E475F0011207D3A9F0FAE0 +:10110B001207A8900130F06013E0B40A057F0D12AE +:10111B001928900130E0FF12192880D47F0D121985 +:06112B00287F0A021928CA +:091917007BFF7A14797F0210F0C5 +:100D3700900136EDF0900135EFF070097F0D121933 +:100D4700287F0A80377F1B1219287F5B121928908A +:100D57000136E0FFD394094003120D959001361236 +:100D67000D877F3B121928900135E0FFD394094086 +:100D770003120D95900135120D877F48121928220D +:100D8700E075F00A84E5F02430FF12192822EF7588 +:0A0D9700F00A842430FF121928220C +:05196200A29892112281 +:10165C00759840538FF7438F0175CBFF75CAF3759F +:09166C00C834D2CA439812D322FB +:081928003099FDC2998F99224C +:071930003098FDAF99C29849 +:01193700228D +:0A18DF008FC5E5C430E7FB7F01224E +:0A18E90043A22012FFC053A2DF2229 +:0C188B008F1CAF058F1F1218E9AF1D2243 +:10164200A2AF9212C2AF8F1CAF038F1FAF058F1DC7 +:091652001218E9A21292AF7F0107 +:01165B00226C +:0813AF00900116EFF0A3EDF030 +:1013B700A2AF9212C2AFE4FD7F0812188B900116FC +:1013C700E0F45FFFA3E04FF51D751C071218E9A2B3 +:0513D7001292AF7F013E +:0113DC0022EE +:08193800C2AF43A22002F4003B +:03000000020B46AA +:0C0B4600787FE4F6D8FD7581D6020B8D97 +:1006B200E709F608DFFA8046E709F208DFFA803E2A +:1006C20088828C83E709F0A3DFFA8032E309F60817 +:1006D200DFFA8078E309F208DFFA807088828C837F +:1006E200E309F0A3DFFA806489828A83E0A3F60833 +:1006F200DFFA805889828A83E0A3F208DFFA804C0D +:1007020080D280FA80C680D4806980F280338010E3 +:1007120080A680EA809A80A880DA80E280CA80334C +:1007220089828A83ECFAE493A3C8C582C8CCC583C4 +:10073200CCF0A3C8C582C8CCC583CCDFE9DEE78094 +:100742000D89828A83E493A3F608DFF9ECFAA9F013 +:10075200EDFB2289828A83ECFAE0A3C8C582C8CC69 +:10076200C583CCF0A3C8C582C8CCC583CCDFEADE82 +:10077200E880DB89828A83E493A3F208DFF980CCE4 +:1007820088F0EF60010E4E60C388F0ED2402B404DD +:100792000050B9F582EB2402B4040050AF23234584 +:0607A200822390070273A0 +:1007A800BB010689828A83E0225002E722BBFE024F +:0907B800E32289828A83E4932282 +:1007C100BB010689828A83F0225002F722BBFE0117 +:0207D100F32211 +:1007D300A3F8E0C5F025F0F0E582158270021583D9 +:0607E300E0C838F0E82236 +:1007E900EB9FF5F0EA9E42F0E99D42F0EC6480C887 +:0607F90064809845F02227 +:0C07FF00ECF0A3EDF0A3EEF0A3EFF0226D +:10080B00A8828583F0D083D082120822120822128C +:10081B000822120822E473E493A3C583C5F0C583B1 +:10082B00C8C582C8F0A3C583C5F0C583C8C582C837 +:01083B00229A +:10083C00D083D082F8E4937012740193700DA3A34B +:10084C0093F8740193F5828883E47374029368605F +:06085C00EFA3A3A380DF5F +:060862008A838982E47321 +:100B52000213DDE493A3F8E493A34003F68001F2C9 +:100B620008DFF48029E493A3F85407240CC8C333A4 +:100B7200C4540F4420C8834004F456800146F6DF73 +:100B8200E4800B01020408102040809015AAE47E44 +:100B9200019360BCA3FF543F30E509541FFEE49368 +:100BA200A360010ECF54C025E060A840B8E493A32F +:100BB200FAE493A3F8E493A3C8C582C8CAC583CA5A +:100BC200F0A3C8C582C8CAC583CADFE9DEE780BE12 +:0115C9000021 :00000001FF |
From: Paul_R <c2m...@c2...> - 2008-05-14 14:52:20
|
Author: Paul_R Date: 2008-05-14 16:52:07 +0200 (Wed, 14 May 2008) New Revision: 1147 Modified: firmware/fuxusb/trunk/fuxusb.Opt firmware/fuxusb/trunk/src/bootloader.c firmware/fuxusb/trunk/src/usb_commands.c firmware/fuxusb/trunk/src/usb_ep.c Log: * Bug fix with the bootloader mode Modified: firmware/fuxusb/trunk/fuxusb.Opt =================================================================== --- firmware/fuxusb/trunk/fuxusb.Opt 2008-05-14 13:47:30 UTC (rev 1146) +++ firmware/fuxusb/trunk/fuxusb.Opt 2008-05-14 14:52:07 UTC (rev 1147) @@ -15,16 +15,16 @@ GRPOPT 2,(mcu),0,0,0 GRPOPT 3,(headers),1,0,0 -OPTFFF 1,1,1,16777216,0,33,35,0,<.\src\main.c><main.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,66,0,0,0,168,3,0,0,43,1,0,0 } -OPTFFF 1,2,1,218103809,0,19,19,0,<.\src\global.c><global.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,124,3,0,0,255,0,0,0 } -OPTFFF 1,3,1,0,0,47,47,0,<.\src\usb_task.c><usb_task.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,142,3,0,0,17,1,0,0 } -OPTFFF 1,4,1,67108864,0,952,952,0,<.\src\usb_enum.c><usb_enum.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,124,3,0,0,255,0,0,0 } -OPTFFF 1,5,1,0,0,1,1,0,<.\src\usb_ep.c><usb_ep.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,3,0,0,233,0,0,0 } -OPTFFF 1,6,1,855638016,0,163,163,0,<.\src\usb_commands.c><usb_commands.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,102,3,0,0,73,1,0,0 } +OPTFFF 1,1,1,603979776,0,21,21,0,<.\src\main.c><main.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,92,4,0,0,61,1,0,0 } +OPTFFF 1,2,1,218103808,0,0,0,0,<.\src\global.c><global.c> +OPTFFF 1,3,1,0,0,0,0,0,<.\src\usb_task.c><usb_task.c> +OPTFFF 1,4,1,67108864,0,0,0,0,<.\src\usb_enum.c><usb_enum.c> +OPTFFF 1,5,1,0,0,25,25,0,<.\src\usb_ep.c><usb_ep.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,104,3,0,0,250,0,0,0 } +OPTFFF 1,6,1,0,0,82,99,0,<.\src\usb_commands.c><usb_commands.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,114,4,0,0,83,1,0,0 } OPTFFF 1,7,1,318767104,0,0,0,0,<.\src\usb_misc.c><usb_misc.c> -OPTFFF 1,8,1,335544320,0,81,81,0,<.\src\spi_task.c><spi_task.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,0,0,0,110,0,0,0,212,3,0,0,87,1,0,0 } -OPTFFF 1,9,1,0,0,207,224,0,<.\src\bootloader.c><bootloader.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,66,0,0,0,146,3,0,0,117,1,0,0 } -OPTFFF 1,10,1,553648128,0,23,23,0,<.\src\i2c.c><i2c.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,88,0,0,0,190,3,0,0,65,1,0,0 } +OPTFFF 1,8,1,335544320,0,0,0,0,<.\src\spi_task.c><spi_task.c> +OPTFFF 1,9,1,1862270976,0,69,76,0,<.\src\bootloader.c><bootloader.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,136,4,0,0,105,1,0,0 } +OPTFFF 1,10,1,553648128,0,0,0,0,<.\src\i2c.c><i2c.c> OPTFFF 1,11,1,721420288,0,0,0,0,<.\src\fifo_spk.c><fifo_spk.c> OPTFFF 1,12,1,0,0,0,0,0,<.\src\fifo_mic.c><fifo_mic.c> OPTFFF 1,13,1,0,0,0,0,0,<.\src\fifo_stt.c><fifo_stt.c> @@ -34,17 +34,11 @@ OPTFFF 2,17,1,0,0,0,0,0,<.\src\lib_mcu\uart\uart_lib.c><uart_lib.c> OPTFFF 2,18,1,167772160,0,0,0,0,<.\src\spi_lib.c><spi_lib.c> OPTFFF 2,19,1,234881024,0,0,0,0,<.\src\lib_mcu\fa-usb\flash_api.c><flash_api.c> -OPTFFF 3,20,5,150994944,0,9,25,0,<.\src\config.h><config.h> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } -OPTFFF 3,21,5,0,0,15,15,0,<.\src\version.h><version.h> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,146,3,0,0,8,1,0,0 } +OPTFFF 3,20,5,33554434,0,29,37,0,<.\src\config.h><config.h> { 44,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,66,0,0,0,66,0,0,0,158,4,0,0,127,1,0,0 } +OPTFFF 3,21,5,0,0,0,0,0,<.\src\version.h><version.h> -ExtF <.\src\config.h> 9,25,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } -ExtF <.\src\version.h> 15,15,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,146,3,0,0,8,1,0,0 } -ExtF <.\src\global.h> 1,14,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } -ExtF <.\src\i2c.h> 33,43,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,88,0,0,0,88,0,0,0,168,3,0,0,139,1,0,0 } -ExtF <.\SRC\bootloader.h> 37,37,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,102,3,0,0,73,1,0,0 } -ExtF <.\SRC\usb_commands.h> 11,11,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } -ExtF <C:\KEIL\C51\INC\STDIO.H> 1,1,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,65,0,0,0,66,0,0,0,167,3,0,0,30,1,0,0 } -ExtF <.\SRC\COMMON\defines.h> 23,34,0,{ 44,0,0,0,0,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } +ExtF <.\src\config.h> 31,48,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } +ExtF <.\src\usb_commands.h> 34,41,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,0,0,0,0,0,0,0,0,124,3,0,0,222,0,0,0 } TARGOPT 1, (fuxusb) CLK51=32000000 Modified: firmware/fuxusb/trunk/src/bootloader.c =================================================================== --- firmware/fuxusb/trunk/src/bootloader.c 2008-05-14 13:47:30 UTC (rev 1146) +++ firmware/fuxusb/trunk/src/bootloader.c 2008-05-14 14:52:07 UTC (rev 1147) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "global.h" @@ -222,13 +222,8 @@ EX0 = 0; /* Disable INT0 interrupt */ - /* Clear pending data on the CMD IN EP */ - Usb_select_ep(EP_CMD_IN); - Usb_clear_tx_ready(); - Usb_clear_tx_complete(); - CMD_IN_Bank_Nb = 0; - usb_reset_endpoint(EP_CMD_IN); - + /* Acknoledge the boot init */ + bl_acknowledge(TRUE, 1, 0, 0); } /** Modified: firmware/fuxusb/trunk/src/usb_commands.c =================================================================== --- firmware/fuxusb/trunk/src/usb_commands.c 2008-05-14 13:47:30 UTC (rev 1146) +++ firmware/fuxusb/trunk/src/usb_commands.c 2008-05-14 14:52:07 UTC (rev 1147) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "global.h" @@ -181,15 +181,11 @@ printf("SEND ACK \n"); #endif Usb_write_byte(BOOTLOADER_CMD); - if (ack) - Usb_write_byte(B_ACK); - else - Usb_write_byte(B_NACK); + Usb_write_byte(ack ? B_ACK : B_NACK); Usb_write_byte(p1); Usb_write_byte(p2); Usb_write_byte(p3); - FIFO_STT_flush(); CMD_IN_Bank_Nb ++; send_status(); Modified: firmware/fuxusb/trunk/src/usb_ep.c =================================================================== --- firmware/fuxusb/trunk/src/usb_ep.c 2008-05-14 13:47:30 UTC (rev 1146) +++ firmware/fuxusb/trunk/src/usb_ep.c 2008-05-14 14:52:07 UTC (rev 1147) @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #include "config.h" #include "usb_ep.h" |
From: Paul_R <c2m...@c2...> - 2008-05-14 13:47:43
|
Author: Paul_R Date: 2008-05-14 15:47:30 +0200 (Wed, 14 May 2008) New Revision: 1146 Added: firmware/fuxusb/trunk/lib_c/ firmware/fuxusb/trunk/lib_c/stdint.h Removed: firmware/fuxusb/trunk/src/lib_c/ Modified: firmware/fuxusb/trunk/fuxusb.Opt firmware/fuxusb/trunk/fuxusb.Uv2 firmware/fuxusb/trunk/src/config.h firmware/fuxusb/trunk/src/global.h firmware/fuxusb/trunk/src/i2c.h Log: * Moved lib_c/stdint.h from src/ to ./ to be compatible with the externals headers (api.h / commands.h / etc). Replaced the #include of this headers by <stdint.h> Modified: firmware/fuxusb/trunk/fuxusb.Opt =================================================================== --- firmware/fuxusb/trunk/fuxusb.Opt 2008-05-14 13:34:46 UTC (rev 1145) +++ firmware/fuxusb/trunk/fuxusb.Opt 2008-05-14 13:47:30 UTC (rev 1146) @@ -16,14 +16,14 @@ GRPOPT 3,(headers),1,0,0 OPTFFF 1,1,1,16777216,0,33,35,0,<.\src\main.c><main.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,66,0,0,0,168,3,0,0,43,1,0,0 } -OPTFFF 1,2,1,486539264,0,15,15,0,<.\src\global.c><global.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,124,3,0,0,255,0,0,0 } +OPTFFF 1,2,1,218103809,0,19,19,0,<.\src\global.c><global.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,124,3,0,0,255,0,0,0 } OPTFFF 1,3,1,0,0,47,47,0,<.\src\usb_task.c><usb_task.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,142,3,0,0,17,1,0,0 } OPTFFF 1,4,1,67108864,0,952,952,0,<.\src\usb_enum.c><usb_enum.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,124,3,0,0,255,0,0,0 } OPTFFF 1,5,1,0,0,1,1,0,<.\src\usb_ep.c><usb_ep.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,3,0,0,233,0,0,0 } OPTFFF 1,6,1,855638016,0,163,163,0,<.\src\usb_commands.c><usb_commands.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,102,3,0,0,73,1,0,0 } OPTFFF 1,7,1,318767104,0,0,0,0,<.\src\usb_misc.c><usb_misc.c> OPTFFF 1,8,1,335544320,0,81,81,0,<.\src\spi_task.c><spi_task.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,0,0,0,110,0,0,0,212,3,0,0,87,1,0,0 } -OPTFFF 1,9,1,1,0,207,224,0,<.\src\bootloader.c><bootloader.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,66,0,0,0,146,3,0,0,117,1,0,0 } +OPTFFF 1,9,1,0,0,207,224,0,<.\src\bootloader.c><bootloader.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,66,0,0,0,146,3,0,0,117,1,0,0 } OPTFFF 1,10,1,553648128,0,23,23,0,<.\src\i2c.c><i2c.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,88,0,0,0,190,3,0,0,65,1,0,0 } OPTFFF 1,11,1,721420288,0,0,0,0,<.\src\fifo_spk.c><fifo_spk.c> OPTFFF 1,12,1,0,0,0,0,0,<.\src\fifo_mic.c><fifo_mic.c> @@ -34,14 +34,17 @@ OPTFFF 2,17,1,0,0,0,0,0,<.\src\lib_mcu\uart\uart_lib.c><uart_lib.c> OPTFFF 2,18,1,167772160,0,0,0,0,<.\src\spi_lib.c><spi_lib.c> OPTFFF 2,19,1,234881024,0,0,0,0,<.\src\lib_mcu\fa-usb\flash_api.c><flash_api.c> -OPTFFF 3,20,5,0,0,1,1,0,<.\src\config.h><config.h> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } -OPTFFF 3,21,5,0,0,0,0,0,<.\src\version.h><version.h> +OPTFFF 3,20,5,150994944,0,9,25,0,<.\src\config.h><config.h> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } +OPTFFF 3,21,5,0,0,15,15,0,<.\src\version.h><version.h> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,146,3,0,0,8,1,0,0 } -ExtF <.\src\config.h> 1,1,0,{ 44,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } -ExtF <.\src\global.h> 1,1,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } -ExtF <.\src\i2c.h> 33,43,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,88,0,0,0,88,0,0,0,168,3,0,0,139,1,0,0 } -ExtF <.\SRC\bootloader.h> 37,37,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,102,3,0,0,73,1,0,0 } -ExtF <.\SRC\usb_commands.h> 27,41,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } +ExtF <.\src\config.h> 9,25,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } +ExtF <.\src\version.h> 15,15,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,146,3,0,0,8,1,0,0 } +ExtF <.\src\global.h> 1,14,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } +ExtF <.\src\i2c.h> 33,43,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,88,0,0,0,88,0,0,0,168,3,0,0,139,1,0,0 } +ExtF <.\SRC\bootloader.h> 37,37,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,102,3,0,0,73,1,0,0 } +ExtF <.\SRC\usb_commands.h> 11,11,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } +ExtF <C:\KEIL\C51\INC\STDIO.H> 1,1,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,65,0,0,0,66,0,0,0,167,3,0,0,30,1,0,0 } +ExtF <.\SRC\COMMON\defines.h> 23,34,0,{ 44,0,0,0,0,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } TARGOPT 1, (fuxusb) CLK51=32000000 Modified: firmware/fuxusb/trunk/fuxusb.Uv2 =================================================================== --- firmware/fuxusb/trunk/fuxusb.Uv2 2008-05-14 13:34:46 UTC (rev 1145) +++ firmware/fuxusb/trunk/fuxusb.Uv2 2008-05-14 13:47:30 UTC (rev 1146) @@ -49,7 +49,7 @@ EnvLib () EnvReg () OrgReg () - TgStat=9 + TgStat=0 OutDir (.\obj\) OutName (fuxusb.aof) GenApp=1 Added: firmware/fuxusb/trunk/lib_c/stdint.h =================================================================== --- firmware/fuxusb/trunk/lib_c/stdint.h (rev 0) +++ firmware/fuxusb/trunk/lib_c/stdint.h 2008-05-14 13:47:30 UTC (rev 1146) @@ -0,0 +1,560 @@ +/* + * ISO/IEC 9899:1999 7.18 Integer types <stdint.h> + */ + +#ifndef __STDINT_H_ +#define __STDINT_H_ + +/** \defgroup avr_stdint <stdint.h>: Standard Integer Types + \code #include <stdint.h> \endcode + + Use [u]intN_t if you need exactly N bits. + + Since these typedefs are mandated by the C99 standard, they are preferred + over rolling your own typedefs. */ + +/* Integer types */ + +/** \name Exact-width integer types + Integer types having exactly the specified width */ + +/*@{*/ + +/** \ingroup avr_stdint + 8-bit signed type. */ + +typedef signed char int8_t; + +/** \ingroup avr_stdint + 8-bit unsigned type. */ + +typedef unsigned char uint8_t; + +/** \ingroup avr_stdint + 16-bit signed type. */ + +typedef signed int int16_t; + +/** \ingroup avr_stdint + 16-bit unsigned type. */ + +typedef unsigned int uint16_t; + +/** \ingroup avr_stdint + 32-bit signed type. */ + +typedef signed long int int32_t; + +/** \ingroup avr_stdint + 32-bit unsigned type. */ + +typedef unsigned long int uint32_t; + +/** \ingroup avr_stdint + 64-bit signed type. */ + +// typedef signed long long int int64_t; + +/** \ingroup avr_stdint + 64-bit unsigned type. */ + +// typedef unsigned long long int uint64_t; + +/*@}*/ + +/** \name Integer types capable of holding object pointers + These allow you to declare variables of the same size as a pointer. */ + +/*@{*/ + +/** \ingroup avr_stdint + Signed pointer compatible type. */ + +typedef int16_t intptr_t; + +/** \ingroup avr_stdint + Unsigned pointer compatible type. */ + +typedef uint16_t uintptr_t; + +/*@}*/ + +/** \name Minimum-width integer types + Integer types having at least the specified width */ + +/*@{*/ + +/** \ingroup avr_stdint + signed int with at least 8 bits. */ + +typedef int8_t int_least8_t; + +/** \ingroup avr_stdint + unsigned int with at least 8 bits. */ + +typedef uint8_t uint_least8_t; + +/** \ingroup avr_stdint + signed int with at least 16 bits. */ + +typedef int16_t int_least16_t; + +/** \ingroup avr_stdint + unsigned int with at least 16 bits. */ + +typedef uint16_t uint_least16_t; + +/** \ingroup avr_stdint + signed int with at least 32 bits. */ + +typedef int32_t int_least32_t; + +/** \ingroup avr_stdint + unsigned int with at least 32 bits. */ + +typedef uint32_t uint_least32_t; + +/** \ingroup avr_stdint + signed int with at least 64 bits. */ + +// typedef int64_t int_least64_t; + +/** \ingroup avr_stdint + unsigned int with at least 64 bits. */ + +// typedef uint64_t uint_least64_t; + +/*@}*/ + + +/** \name Fastest minimum-width integer types + Integer types being usually fastest having at least the specified width */ + +/*@{*/ + +/** \ingroup avr_stdint + fastest signed int with at least 8 bits. */ + +typedef int8_t int_fast8_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 8 bits. */ + +typedef uint8_t uint_fast8_t; + +/** \ingroup avr_stdint + fastest signed int with at least 16 bits. */ + +typedef int16_t int_fast16_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 16 bits. */ + +typedef uint16_t uint_fast16_t; + +/** \ingroup avr_stdint + fastest signed int with at least 32 bits. */ + +typedef int32_t int_fast32_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 32 bits. */ + +typedef uint32_t uint_fast32_t; + +/** \ingroup avr_stdint + fastest signed int with at least 64 bits. */ + +// typedef int64_t int_fast64_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 64 bits. */ + +// typedef uint64_t uint_fast64_t; + +/*@}*/ + + +/** \name Greatest-width integer types + Types designating integer data capable of representing any value of + any integer type in the corresponding signed or unsigned category */ + +/*@{*/ + +/** \ingroup avr_stdint + largest signed int available. */ + +// typedef int64_t intmax_t; + +/** \ingroup avr_stdint + largest unsigned int available. */ + +// typedef uint64_t uintmax_t; + +/*@}*/ + +/* Helping macro */ +#ifndef __CONCAT +#define __CONCATenate(left, right) left ## right +#define __CONCAT(left, right) __CONCATenate(left, right) +#endif + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) + +/** \name Limits of specified-width integer types + C++ implementations should define these macros only when + __STDC_LIMIT_MACROS is defined before <stdint.h> is included */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an int8_t can hold. */ + +#define INT8_MAX 0x7f + +/** \ingroup avr_stdint + smallest negative value an int8_t can hold. */ + +#define INT8_MIN (-INT8_MAX - 1) + +/** \ingroup avr_stdint + largest value an uint8_t can hold. */ + +#define UINT8_MAX (__CONCAT(INT8_MAX, U) * 2U + 1U) + +/** \ingroup avr_stdint + largest positive value an int16_t can hold. */ + +#define INT16_MAX 0x7fff + +/** \ingroup avr_stdint + smallest negative value an int16_t can hold. */ + +#define INT16_MIN (-INT16_MAX - 1) + +/** \ingroup avr_stdint + largest value an uint16_t can hold. */ + +#define UINT16_MAX (__CONCAT(INT16_MAX, U) * 2U + 1U) + +/** \ingroup avr_stdint + largest positive value an int32_t can hold. */ + +#define INT32_MAX 0x7fffffffL + +/** \ingroup avr_stdint + smallest negative value an int32_t can hold. */ + +#define INT32_MIN (-INT32_MAX - 1L) + +/** \ingroup avr_stdint + largest value an uint32_t can hold. */ + +#define UINT32_MAX (__CONCAT(INT32_MAX, U) * 2UL + 1UL) + +/** \ingroup avr_stdint + largest positive value an int64_t can hold. */ + +#define INT64_MAX 0x7fffffffffffffffLL + +/** \ingroup avr_stdint + smallest negative value an int64_t can hold. */ + +#define INT64_MIN (-INT64_MAX - 1LL) + +/** \ingroup avr_stdint + largest value an uint64_t can hold. */ + +#define UINT64_MAX (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL) + +/*@}*/ + +/** \name Limits of minimum-width integer types */ +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an int_least8_t can hold. */ + +#define INT_LEAST8_MAX INT8_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least8_t can hold. */ + +#define INT_LEAST8_MIN INT8_MIN + +/** \ingroup avr_stdint + largest value an uint_least8_t can hold. */ + +#define UINT_LEAST8_MAX UINT8_MAX + +/** \ingroup avr_stdint + largest positive value an int_least16_t can hold. */ + +#define INT_LEAST16_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least16_t can hold. */ + +#define INT_LEAST16_MIN INT16_MIN + +/** \ingroup avr_stdint + largest value an uint_least16_t can hold. */ + +#define UINT_LEAST16_MAX UINT16_MAX + +/** \ingroup avr_stdint + largest positive value an int_least32_t can hold. */ + +#define INT_LEAST32_MAX INT32_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least32_t can hold. */ + +#define INT_LEAST32_MIN INT32_MIN + +/** \ingroup avr_stdint + largest value an uint_least32_t can hold. */ + +#define UINT_LEAST32_MAX UINT32_MAX + +/** \ingroup avr_stdint + largest positive value an int_least64_t can hold. */ + +#define INT_LEAST64_MAX INT64_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least64_t can hold. */ + +#define INT_LEAST64_MIN INT64_MIN + +/** \ingroup avr_stdint + largest value an uint_least64_t can hold. */ + +#define UINT_LEAST64_MAX UINT64_MAX + +/*@}*/ + +/** \name Limits of fastest minimum-width integer types */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an int_fast8_t can hold. */ + +#define INT_FAST8_MAX INT8_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast8_t can hold. */ + +#define INT_FAST8_MIN INT8_MIN + +/** \ingroup avr_stdint + largest value an uint_fast8_t can hold. */ + +#define UINT_FAST8_MAX UINT8_MAX + +/** \ingroup avr_stdint + largest positive value an int_fast16_t can hold. */ + +#define INT_FAST16_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast16_t can hold. */ + +#define INT_FAST16_MIN INT16_MIN + +/** \ingroup avr_stdint + largest value an uint_fast16_t can hold. */ + +#define UINT_FAST16_MAX UINT16_MAX + +/** \ingroup avr_stdint + largest positive value an int_fast32_t can hold. */ + +#define INT_FAST32_MAX INT32_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast32_t can hold. */ + +#define INT_FAST32_MIN INT32_MIN + +/** \ingroup avr_stdint + largest value an uint_fast32_t can hold. */ + +#define UINT_FAST32_MAX UINT32_MAX + +/** \ingroup avr_stdint + largest positive value an int_fast64_t can hold. */ + +#define INT_FAST64_MAX INT64_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast64_t can hold. */ + +#define INT_FAST64_MIN INT64_MIN + +/** \ingroup avr_stdint + largest value an uint_fast64_t can hold. */ + +#define UINT_FAST64_MAX UINT64_MAX + +/*@}*/ + +/** \name Limits of integer types capable of holding object pointers */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an intptr_t can hold. */ + +#define INTPTR_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value an intptr_t can hold. */ + +#define INTPTR_MIN INT16_MIN + +/** \ingroup avr_stdint + largest value an uintptr_t can hold. */ + +#define UINTPTR_MAX UINT16_MAX + +/*@}*/ + +/** \name Limits of greatest-width integer types */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an intmax_t can hold. */ + +#define INTMAX_MAX INT64_MAX + +/** \ingroup avr_stdint + smallest negative value an intmax_t can hold. */ + +#define INTMAX_MIN INT64_MIN + +/** \ingroup avr_stdint + largest value an uintmax_t can hold. */ + +#define UINTMAX_MAX UINT64_MAX + +/*@}*/ + +/** \name Limits of other integer types + C++ implementations should define these macros only when + __STDC_LIMIT_MACROS is defined before <stdint.h> is included */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value a ptrdiff_t can hold. */ + +#define PTRDIFF_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value a ptrdiff_t can hold. */ + +#define PTRDIFF_MIN INT16_MIN + + +/* Limits of sig_atomic_t */ +/* signal.h is currently not implemented (not avr/signal.h) */ + +/** \ingroup avr_stdint + largest positive value a sig_atomic_t can hold. */ + +#define SIG_ATOMIC_MAX INT8_MAX + +/** \ingroup avr_stdint + smallest negative value a sig_atomic_t can hold. */ + +#define SIG_ATOMIC_MIN INT8_MIN + + +/** \ingroup avr_stdint + largest value a size_t can hold. */ + +#define SIZE_MAX (__CONCAT(INT16_MAX, U)) + + +/* Limits of wchar_t */ +/* wchar.h is currently not implemented */ +/* #define WCHAR_MAX */ +/* #define WCHAR_MIN */ + + +/* Limits of wint_t */ +/* wchar.h is currently not implemented */ +/* #define WINT_MAX */ +/* #define WINT_MIN */ + + +#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) + +/** \name Macros for integer constants + C++ implementations should define these macros only when + __STDC_CONSTANT_MACROS is defined before <stdint.h> is included. + + These definitions are valid for integer constants without suffix and + for macros defined as integer constant without suffix */ + +/** \ingroup avr_stdint + define a constant of type int8_t */ + +#define INT8_C(value) ((int8_t) value) + +/** \ingroup avr_stdint + define a constant of type uint8_t */ + +#define UINT8_C(value) ((uint8_t) __CONCAT(value, U)) + +/** \ingroup avr_stdint + define a constant of type int16_t */ + +#define INT16_C(value) value + +/** \ingroup avr_stdint + define a constant of type uint16_t */ + +#define UINT16_C(value) __CONCAT(value, U) + +/** \ingroup avr_stdint + define a constant of type int32_t */ + +#define INT32_C(value) __CONCAT(value, L) + +/** \ingroup avr_stdint + define a constant of type uint32_t */ + +#define UINT32_C(value) __CONCAT(value, UL) + +/** \ingroup avr_stdint + define a constant of type int64_t */ + +#define INT64_C(value) __CONCAT(value, LL) + +/** \ingroup avr_stdint + define a constant of type uint64_t */ + +#define UINT64_C(value) __CONCAT(value, ULL) + +/** \ingroup avr_stdint + define a constant of type intmax_t */ + +#define INTMAX_C(value) __CONCAT(value, LL) + +/** \ingroup avr_stdint + define a constant of type uintmax_t */ + +#define UINTMAX_C(value) __CONCAT(value, ULL) + +/*@}*/ + +#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ + + +#endif /* _STDINT_H_ */ Property changes on: firmware/fuxusb/trunk/lib_c/stdint.h ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Id Name: svn:eol-style + native Modified: firmware/fuxusb/trunk/src/config.h =================================================================== --- firmware/fuxusb/trunk/src/config.h 2008-05-14 13:34:46 UTC (rev 1145) +++ firmware/fuxusb/trunk/src/config.h 2008-05-14 13:47:30 UTC (rev 1146) @@ -17,12 +17,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _CONFIG_H_ #define _CONFIG_H_ -#include "lib_c/stdint.h" +#include <stdint.h> #include "lib_mcu/compiler.h" #include "lib_mcu/reg_5131.h" #include "lib_mcu/ext_5131.h" Modified: firmware/fuxusb/trunk/src/global.h =================================================================== --- firmware/fuxusb/trunk/src/global.h 2008-05-14 13:34:46 UTC (rev 1145) +++ firmware/fuxusb/trunk/src/global.h 2008-05-14 13:47:30 UTC (rev 1146) @@ -1,7 +1,7 @@ #ifndef _GLOBAL_H_ #define _GLOBAL_H_ -#include "common\api.h" +#include "src\common\api.h" #include "common\defines.h" #define rf_reset_signal P0_1 Modified: firmware/fuxusb/trunk/src/i2c.h =================================================================== --- firmware/fuxusb/trunk/src/i2c.h 2008-05-14 13:34:46 UTC (rev 1145) +++ firmware/fuxusb/trunk/src/i2c.h 2008-05-14 13:47:30 UTC (rev 1146) @@ -17,12 +17,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id:$ */ +/* $Id$ */ #ifndef _I2C_H_ #define _I2C_H_ -#include "lib_c/stdint.h" +#include <stdint.h> #include "lib_mcu/twi/twi.h" #include "config.h" |
From: Paul_R <c2m...@c2...> - 2008-05-14 13:34:50
|
Author: Paul_R Date: 2008-05-14 15:34:46 +0200 (Wed, 14 May 2008) New Revision: 1145 Removed: firmware/fuxusb/trunk/src/common/ Log: * Removed 'common' |
Author: Paul_R Date: 2008-05-14 15:32:36 +0200 (Wed, 14 May 2008) New Revision: 1144 Added: firmware/fuxusb/trunk/ firmware/fuxusb/trunk/fuxusb.Opt firmware/fuxusb/trunk/fuxusb.Uv2 firmware/fuxusb/trunk/src/ firmware/fuxusb/trunk/src/Doxyfile firmware/fuxusb/trunk/src/bootloader.c firmware/fuxusb/trunk/src/bootloader.h firmware/fuxusb/trunk/src/common/ firmware/fuxusb/trunk/src/config.h firmware/fuxusb/trunk/src/fifo_mic.c firmware/fuxusb/trunk/src/fifo_mic.h firmware/fuxusb/trunk/src/fifo_spk.c firmware/fuxusb/trunk/src/fifo_spk.h firmware/fuxusb/trunk/src/fifo_stt.c firmware/fuxusb/trunk/src/fifo_stt.h firmware/fuxusb/trunk/src/global.c firmware/fuxusb/trunk/src/global.h firmware/fuxusb/trunk/src/i2c.c firmware/fuxusb/trunk/src/i2c.h firmware/fuxusb/trunk/src/lib_c/ firmware/fuxusb/trunk/src/lib_c/stdint.h firmware/fuxusb/trunk/src/lib_mcu/ firmware/fuxusb/trunk/src/lib_mcu/5131_drv.h firmware/fuxusb/trunk/src/lib_mcu/c51_drv.h firmware/fuxusb/trunk/src/lib_mcu/compiler.h firmware/fuxusb/trunk/src/lib_mcu/ext_5131.h firmware/fuxusb/trunk/src/lib_mcu/fa-usb/ firmware/fuxusb/trunk/src/lib_mcu/fa-usb/fa-usb.html firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.c firmware/fuxusb/trunk/src/lib_mcu/fa-usb/flash_api.h firmware/fuxusb/trunk/src/lib_mcu/mcu.h firmware/fuxusb/trunk/src/lib_mcu/mcu_drv.h firmware/fuxusb/trunk/src/lib_mcu/reg_5131.h firmware/fuxusb/trunk/src/lib_mcu/spi/ firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.c firmware/fuxusb/trunk/src/lib_mcu/spi/spi_lib.h firmware/fuxusb/trunk/src/lib_mcu/twi/ firmware/fuxusb/trunk/src/lib_mcu/twi/twi.h firmware/fuxusb/trunk/src/lib_mcu/uart/ firmware/fuxusb/trunk/src/lib_mcu/uart/tools/ firmware/fuxusb/trunk/src/lib_mcu/uart/tools/c51_bdr.c firmware/fuxusb/trunk/src/lib_mcu/uart/uart_bdr.h firmware/fuxusb/trunk/src/lib_mcu/uart/uart_lib.c firmware/fuxusb/trunk/src/lib_mcu/uart/uart_lib.h firmware/fuxusb/trunk/src/lib_mcu/usb/ firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.c firmware/fuxusb/trunk/src/lib_mcu/usb/usb_drv.h firmware/fuxusb/trunk/src/main.c firmware/fuxusb/trunk/src/misc.c firmware/fuxusb/trunk/src/misc.h firmware/fuxusb/trunk/src/rf.c firmware/fuxusb/trunk/src/rf.h firmware/fuxusb/trunk/src/spi_lib.c firmware/fuxusb/trunk/src/spi_lib.h firmware/fuxusb/trunk/src/spi_task.c firmware/fuxusb/trunk/src/spi_task.h firmware/fuxusb/trunk/src/usb_commands.c firmware/fuxusb/trunk/src/usb_commands.h firmware/fuxusb/trunk/src/usb_enum.c firmware/fuxusb/trunk/src/usb_enum.h firmware/fuxusb/trunk/src/usb_ep.c firmware/fuxusb/trunk/src/usb_ep.h firmware/fuxusb/trunk/src/usb_misc.c firmware/fuxusb/trunk/src/usb_misc.h firmware/fuxusb/trunk/src/usb_task.c firmware/fuxusb/trunk/src/usb_task.h firmware/fuxusb/trunk/src/version.h Log: * Added the new trunk : USB class is now HID. This firmware is normally compatible with windows and linux. This is a clean version of the branch 'usb_cleanup' Property changes on: firmware/fuxusb/trunk ___________________________________________________________________ Name: svn:externals + src/common http://svn.tuxisalive.com/firmware/tuxdefs Added: firmware/fuxusb/trunk/fuxusb.Opt =================================================================== --- firmware/fuxusb/trunk/fuxusb.Opt (rev 0) +++ firmware/fuxusb/trunk/fuxusb.Opt 2008-05-14 13:32:36 UTC (rev 1144) @@ -0,0 +1,67 @@ +### uVision2 Project, (C) Keil Software +### Do not modify ! + + cExt (*.c) + aExt (*.s*; *.src; *.a*) + oExt (*.obj) + lExt (*.lib) + tExt (*.txt; *.h; *.inc) + pExt (*.plm) + CppX (*.cpp) + DaveTm { 0,0,0,0,0,0,0,0 } + +Target (fuxusb), 0x0000 // Tools: 'MCS-51' +GRPOPT 1,(app),1,0,0 +GRPOPT 2,(mcu),0,0,0 +GRPOPT 3,(headers),1,0,0 + +OPTFFF 1,1,1,16777216,0,33,35,0,<.\src\main.c><main.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,66,0,0,0,168,3,0,0,43,1,0,0 } +OPTFFF 1,2,1,486539264,0,15,15,0,<.\src\global.c><global.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,124,3,0,0,255,0,0,0 } +OPTFFF 1,3,1,0,0,47,47,0,<.\src\usb_task.c><usb_task.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,142,3,0,0,17,1,0,0 } +OPTFFF 1,4,1,67108864,0,952,952,0,<.\src\usb_enum.c><usb_enum.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,124,3,0,0,255,0,0,0 } +OPTFFF 1,5,1,0,0,1,1,0,<.\src\usb_ep.c><usb_ep.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,3,0,0,233,0,0,0 } +OPTFFF 1,6,1,855638016,0,163,163,0,<.\src\usb_commands.c><usb_commands.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,102,3,0,0,73,1,0,0 } +OPTFFF 1,7,1,318767104,0,0,0,0,<.\src\usb_misc.c><usb_misc.c> +OPTFFF 1,8,1,335544320,0,81,81,0,<.\src\spi_task.c><spi_task.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,110,0,0,0,110,0,0,0,212,3,0,0,87,1,0,0 } +OPTFFF 1,9,1,1,0,207,224,0,<.\src\bootloader.c><bootloader.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,66,0,0,0,146,3,0,0,117,1,0,0 } +OPTFFF 1,10,1,553648128,0,23,23,0,<.\src\i2c.c><i2c.c> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,0,0,0,88,0,0,0,190,3,0,0,65,1,0,0 } +OPTFFF 1,11,1,721420288,0,0,0,0,<.\src\fifo_spk.c><fifo_spk.c> +OPTFFF 1,12,1,0,0,0,0,0,<.\src\fifo_mic.c><fifo_mic.c> +OPTFFF 1,13,1,0,0,0,0,0,<.\src\fifo_stt.c><fifo_stt.c> +OPTFFF 1,14,1,637534208,0,0,0,0,<.\src\rf.c><rf.c> +OPTFFF 1,15,1,251658240,0,0,0,0,<.\src\misc.c><misc.c> +OPTFFF 2,16,1,0,0,0,0,0,<.\src\lib_mcu\usb\usb_drv.c><usb_drv.c> +OPTFFF 2,17,1,0,0,0,0,0,<.\src\lib_mcu\uart\uart_lib.c><uart_lib.c> +OPTFFF 2,18,1,167772160,0,0,0,0,<.\src\spi_lib.c><spi_lib.c> +OPTFFF 2,19,1,234881024,0,0,0,0,<.\src\lib_mcu\fa-usb\flash_api.c><flash_api.c> +OPTFFF 3,20,5,0,0,1,1,0,<.\src\config.h><config.h> { 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } +OPTFFF 3,21,5,0,0,0,0,0,<.\src\version.h><version.h> + +ExtF <.\src\config.h> 1,1,0,{ 44,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,22,0,0,0,23,0,0,0,102,3,0,0,74,1,0,0 } +ExtF <.\src\global.h> 1,1,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } +ExtF <.\src\i2c.h> 33,43,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,252,255,255,255,233,255,255,255,88,0,0,0,88,0,0,0,168,3,0,0,139,1,0,0 } +ExtF <.\SRC\bootloader.h> 37,37,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,22,0,0,0,22,0,0,0,102,3,0,0,73,1,0,0 } +ExtF <.\SRC\usb_commands.h> 27,41,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,44,0,0,0,44,0,0,0,124,3,0,0,95,1,0,0 } + +TARGOPT 1, (fuxusb) + CLK51=32000000 + OPTTT 1,1,1,0 + OPTHX 0,65535,0,0,0 + OPTLX 120,65,8,<.\lst\> + OPTOX 16 + OPTLT 1,1,1,0,1,1,0,1,0,0,0,0 + OPTXL 1,1,1,1,1,1,1,0,0 + OPTFL 1,0,1 + OPTBL 0,(Add on databooks)<DATASHTS\ADDBOOKS.PDF> + OPTBL 1,(Data Sheet)<DATASHTS\ATMEL\AT89C5131_DS.PDF> + OPTBL 2,(Instruction Set Manual)<DATASHTS\ATMEL\AT_C51ISM.PDF> + OPTDL (S8051.DLL)()(DP51.DLL)(-p5131)(S8051.DLL)()(TP51.DLL)(-p5131) + OPTDBG 48125,-1,()()()()()()()()()() (BIN\MON51.DLL)()()() + OPTKEY 0,(DLGDP51)((98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(5056=-1,-1,-1,-1,0)(5055=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)(94=-1,-1,-1,-1,0)(95=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(5008=-1,-1,-1,-1,0)(5057=-1,-1,-1,-1,0)(5003=-1,-1,-1,-1,0)(2003=-1,-1,-1,-1,0)(5061=-1,-1,-1,-1,0)(5113=-1,-1,-1,-1,0)) + OPTKEY 0,(DLGTP51)((98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(5056=-1,-1,-1,-1,0)(5055=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)(94=-1,-1,-1,-1,0)(95=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(5008=-1,-1,-1,-1,0)(5057=-1,-1,-1,-1,0)(5003=-1,-1,-1,-1,0)(2003=-1,-1,-1,-1,0)(5061=-1,-1,-1,-1,0)(5113=-1,-1,-1,-1,0)) + OPTKEY 0,(MON51)() + OPTDF 0x84 + OPTLE <> + OPTLC <> +EndOpt + Added: firmware/fuxusb/trunk/fuxusb.Uv2 =================================================================== --- firmware/fuxusb/trunk/fuxusb.Uv2 (rev 0) +++ firmware/fuxusb/trunk/fuxusb.Uv2 2008-05-14 13:32:36 UTC (rev 1144) @@ -0,0 +1,136 @@ +### uVision2 Project, (C) Keil Software +### Do not modify ! + +Target (fuxusb), 0x0000 // Tools: 'MCS-51' + +Group (app) +Group (mcu) +Group (headers) + +File 1,1,<.\src\main.c><main.c> 0x0 +File 1,1,<.\src\global.c><global.c> 0x0 +File 1,1,<.\src\usb_task.c><usb_task.c> 0x0 +File 1,1,<.\src\usb_enum.c><usb_enum.c> 0x0 +File 1,1,<.\src\usb_ep.c><usb_ep.c> 0x0 +File 1,1,<.\src\usb_commands.c><usb_commands.c> 0x0 +File 1,1,<.\src\usb_misc.c><usb_misc.c> 0x0 +File 1,1,<.\src\spi_task.c><spi_task.c> 0x0 +File 1,1,<.\src\bootloader.c><bootloader.c> 0x0 +File 1,1,<.\src\i2c.c><i2c.c> 0x0 +File 1,1,<.\src\fifo_spk.c><fifo_spk.c> 0x0 +File 1,1,<.\src\fifo_mic.c><fifo_mic.c> 0x0 +File 1,1,<.\src\fifo_stt.c><fifo_stt.c> 0x0 +File 1,1,<.\src\rf.c><rf.c> 0x0 +File 1,1,<.\src\misc.c><misc.c> 0x0 +File 2,1,<.\src\lib_mcu\usb\usb_drv.c><usb_drv.c> 0x0 +File 2,1,<.\src\lib_mcu\uart\uart_lib.c><uart_lib.c> 0x0 +File 2,1,<.\src\spi_lib.c><spi_lib.c> 0x0 +File 2,1,<.\src\lib_mcu\fa-usb\flash_api.c><flash_api.c> 0x0 +File 3,5,<.\src\config.h><config.h> 0x0 +File 3,5,<.\src\version.h><version.h> 0x0 + + +Options 1,0,0 // Target 'fuxusb' + Device (AT89C5131) + Vendor (Atmel) + Cpu (IRAM(0-0xFF) XRAM(0-0x3FF) CLOCK(32000000)) + FlashUt ("batchisp" (-device $D -hardware RS232 -port COM1 -baudrate 19200 -operation MEMORY FLASH LOADBUFFER %H PROGRAM)) + StupF ("LIB\STARTUP.A51" ("Standard 8051 Startup Code")) + FlashDR () + Rgf (REG52.H) + Mem () + C () + A () + RL () + OH () + UseEnv=0 + EnvBin (C:\Keil\C51\BIN\) + EnvInc () + EnvLib () + EnvReg () + OrgReg () + TgStat=9 + OutDir (.\obj\) + OutName (fuxusb.aof) + GenApp=1 + GenLib=0 + GenHex=1 + Debug=1 + Browse=1 + LstDir (.\lst\) + HexSel=0 + MG32K=0 + TGMORE=0 + RunUsr 0 0 <> + RunUsr 1 0 <> + BrunUsr 0 0 <> + BrunUsr 1 0 <> + SVCSID <> + MODEL5=2 + RTOS5=0 + ROMSZ5=2 + DHOLD5=0 + XHOLD5=0 + T51FL=48 + CBANKS5=0 + XBANKS5=0 + RCB51 { 0,0,0,0,0,255,255,0,0 } + RXB51 { 0,0,0,0,0,0,0,0,0 } + OCM51 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } + OCR51 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } + IRO51 { 0,0,0,0,0,0,0,0,0 } + IRA51 { 0,0,0,0,0,0,1,0,0 } + XRA51 { 0,0,0,0,0,0,4,0,0 } + XRA512 { 0,0,0,0,0,0,0,0,0 } + C51FL=21646608 + C51VA=0 + C51MSC () + C51DEF (KEIL) + C51UDF () + INCC5 (.\;.\;.\;.\lib_c\) + AX51FL=4 + AX51MSC () + AX51SET () + AX51RST () + INCA5 () + PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } + IncBld=1 + AlwaysBuild=0 + GenAsm=0 + AsmAsm=0 + PublicsOnly=0 + StopCode=3 + CustArgs () + LibMods () + BankNo=65535 + LX51FL=292 + LX51OVL () + LX51MSC () + LX51DWN (16) + LX51LFI () + LX51ASN () + LX51RES () + LX51CCL () + LX51UCL () + LX51CSC () + LX51UCS () + LX51COB () + LX51XDB () + LX51PDB () + LX51BIB () + LX51DAB () + LX51IDB () + LX51PRC () + LX51STK () + LX51COS () + LX51XDS () + LX51BIS () + LX51DAS () + LX51IDS () + OPTDL (S8051.DLL)()(DP51.DLL)(-p5131)(S8051.DLL)()(TP51.DLL)(-p5131) + OPTDBG 48125,-1,()()()()()()()()()() (BIN\MON51.DLL)()()() + FLASH1 { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } + FLASH2 () + FLASH3 ("batchisp" (-device $D -hardware RS232 -port COM1 -baudrate 19200 -operation MEMORY FLASH LOADBUFFER %H PROGRAM)) +EndOpt + Added: firmware/fuxusb/trunk/src/Doxyfile =================================================================== --- firmware/fuxusb/trunk/src/Doxyfile (rev 0) +++ firmware/fuxusb/trunk/src/Doxyfile 2008-05-14 13:32:36 UTC (rev 1144) @@ -0,0 +1,1277 @@ +# Doxyfile 1.5.2 - Doxygen configuration file for TUXCORE +# +# TUXCORE - Firmware for the 'core' CPU of tuxdroid +# Copyright (C) 2007 C2ME S.A. <tux...@c2...> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# $Id: Doxyfile 667 2007-11-08 15:45:41Z jaguarondi $ + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = tuxcore + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = $(VERSION) + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command <command> <input-file>, where <command> is the value of +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = */.svn/* */dep/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = doc + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = __DOXYGEN__ + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to... [truncated message content] |
From: Paul_R <c2m...@c2...> - 2008-05-14 12:43:39
|
Author: Paul_R Date: 2008-05-14 14:43:35 +0200 (Wed, 14 May 2008) New Revision: 1143 Removed: firmware/fuxusb/trunk/ Log: * Removed the current trunk. It'll be replaced by a new one. |
From: remi <c2m...@c2...> - 2008-05-14 08:26:46
|
Author: remi Date: 2008-05-14 10:21:49 +0200 (Wed, 14 May 2008) New Revision: 1142 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c Log: bug fix: avoid the doubling of the last command from a macro file. Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-14 07:42:56 UTC (rev 1141) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-14 08:21:49 UTC (rev 1142) @@ -1233,9 +1233,8 @@ if (macro_file) { - while (!feof(macro_file)) + while (fgets(line, sizeof(line)-2, macro_file) != NULL) { - fgets(line, sizeof(line)-2, macro_file); ret = parse_line(line); if (ret != E_TUXDRV_NOERROR) { |
From: remi <c2m...@c2...> - 2008-05-14 07:42:58
|
Author: remi Date: 2008-05-14 09:42:56 +0200 (Wed, 14 May 2008) New Revision: 1141 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c Log: Added some initializations when the driver is started. Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-05-14 07:38:58 UTC (rev 1140) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-05-14 07:42:56 UTC (rev 1141) @@ -475,6 +475,11 @@ tux_usb_set_connect_dongle_callback(on_usb_connect); tux_usb_set_disconnect_dongle_callback(on_usb_disconnect); tux_usb_set_loop_cycle_complete_callback(on_read_loop_cycle_complete); + tux_descriptor_init(); + tux_hw_status_init(); + tux_sw_status_init(); + tux_user_inputs_init(); + tux_cmd_parser_init(); driver_started = true; while (driver_started) |
From: remi <c2m...@c2...> - 2008-05-14 07:39:06
|
Author: remi Date: 2008-05-14 09:38:58 +0200 (Wed, 14 May 2008) New Revision: 1140 Modified: software_suite_v2/middleware/tuxdriver/trunk/include/tux_driver.py Log: Added the type of the status in the dict returned by the function "GetStatusStruct" Modified: software_suite_v2/middleware/tuxdriver/trunk/include/tux_driver.py =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/include/tux_driver.py 2008-05-12 08:03:59 UTC (rev 1139) +++ software_suite_v2/middleware/tuxdriver/trunk/include/tux_driver.py 2008-05-14 07:38:58 UTC (rev 1140) @@ -192,7 +192,8 @@ if self.tux_driver_lib == None: return E_TUXDRV_PARSERISDISABLED - ret = self.tux_driver_lib.TuxDrv_PerformCommand(c_double(delay), c_char_p(command)) + ret = self.tux_driver_lib.TuxDrv_PerformCommand(c_double(delay), + c_char_p(command)) return ret @@ -332,7 +333,12 @@ return def GetStatusStruct(self, status = ""): - result = {'name' : "None", 'value' : None, 'delay' : 0.0} + result = { + 'name' : "None", + 'value' : None, + 'delay' : 0.0, + 'type' : 'string' + } if self.tux_driver_lib == None: return result @@ -343,6 +349,7 @@ result['name'] = status_s[0] result['delay'] = status_s[3] + result['type'] = status_s[1] if status_s[1] in ['uint8', 'int8', 'int', 'float', 'bool']: result['value'] = eval(status_s[2]) |
From: eFfeM <c2m...@c2...> - 2008-05-12 08:04:05
|
Author: eFfeM Date: 2008-05-12 10:03:59 +0200 (Mon, 12 May 2008) New Revision: 1139 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h Log: made individual data structures for all sub_command types (see comment in tux_types.h) fixed a few bugs removed a few forgotten debug fprintf's Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-08 16:40:57 UTC (rev 1138) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-12 08:03:59 UTC (rev 1139) @@ -272,7 +272,7 @@ else if (strcmp(tokens[2], "MUTE") == 0) { cmd->sub_command = MUTE; - if (str_to_bool(tokens[3], &cmd->audio_parameters.muteflag)) + if (str_to_bool(tokens[3], &cmd->audio_mute_parameters.muteflag)) { // write to struct ret = E_TUXDRV_NOERROR; @@ -302,8 +302,8 @@ else if (strcmp(tokens[2], "ON") == 0) { cmd->sub_command = ON; - if (str_to_uint8(tokens[3], &cmd->eyes_parameters.nr_movements) && - str_to_state_t(tokens[4], &cmd->eyes_parameters.state)) + if (str_to_uint8(tokens[3], &cmd->eyes_on_parameters.nr_movements) && + str_to_state_t(tokens[4], &cmd->eyes_on_parameters.state)) { ret = E_TUXDRV_NOERROR; } @@ -311,8 +311,8 @@ else if (strcmp(tokens[2], "ON_DURING") == 0) { cmd->sub_command = ON_DURING; - if (str_to_float(tokens[3], &cmd->eyes_parameters.duration) && - str_to_state_t(tokens[4], &cmd->eyes_parameters.state)) + if (str_to_float(tokens[3], &cmd->eyes_on_during_parameters.duration) && + str_to_state_t(tokens[4], &cmd->eyes_on_during_parameters.state)) { ret = E_TUXDRV_NOERROR; } @@ -346,8 +346,8 @@ else if (strcmp(tokens[2], "SEND") == 0) { cmd->sub_command = SEND; - if (str_to_uint8(tokens[3], &cmd->ir_parameters.address) && - str_to_uint8(tokens[4], &cmd->ir_parameters.command)) + if (str_to_uint8(tokens[3], &cmd->ir_send_parameters.address) && + str_to_uint8(tokens[4], &cmd->ir_send_parameters.command)) { ret = E_TUXDRV_NOERROR; } @@ -363,51 +363,58 @@ parse_tux_led_command(tokens_t tokens, delay_cmd_t *cmd) { TuxDrvError ret = E_TUXDRV_INVALIDCOMMAND; - if (str_to_leds_t(tokens[3], &cmd->led_parameters.leds)) + if (strcmp(tokens[2], "BLINK") == 0) { - if (strcmp(tokens[2], "BLINK") == 0) + cmd->sub_command = BLINK; + if (str_to_leds_t(tokens[3], &cmd->led_blink_parameters.leds) && + str_to_uint8(tokens[4], &cmd->led_blink_parameters.pulse_count) && + str_to_float(tokens[5], &cmd->led_blink_parameters.pulse_period)) { - cmd->sub_command = BLINK; - if (str_to_uint8(tokens[4], &cmd->led_parameters.nr_blinks) && - str_to_float(tokens[5], &cmd->led_parameters.duration)) - { - ret = E_TUXDRV_NOERROR; - } + ret = E_TUXDRV_NOERROR; } - else if (strcmp(tokens[2], "OFF") == 0) + } + else if (strcmp(tokens[2], "OFF") == 0) + { + cmd->sub_command = OFF; + if (str_to_leds_t(tokens[3], &cmd->led_off_parameters.leds)) { - cmd->sub_command = OFF; ret = E_TUXDRV_NOERROR; } - else if (strcmp(tokens[2], "ON") == 0) + } + else if (strcmp(tokens[2], "ON") == 0) + { + cmd->sub_command = ON; + if (str_to_leds_t(tokens[3], &cmd->led_on_parameters.leds) && + str_to_float(tokens[4], &cmd->led_on_parameters.intensity)) { - cmd->sub_command = ON; ret = E_TUXDRV_NOERROR; } - else if (strcmp(tokens[2], "PULSE") == 0) + } + else if (strcmp(tokens[2], "PULSE") == 0) + { + cmd->sub_command = PULSE; + if (str_to_leds_t(tokens[3], &cmd->led_pulse_parameters.leds) && + str_to_float(tokens[4], &cmd->led_pulse_parameters.min_intensity) && + str_to_float(tokens[5], &cmd->led_pulse_parameters.max_intensity) && + str_to_uint8(tokens[6], &cmd->led_pulse_parameters.pulse_count) && + str_to_float(tokens[7], &cmd->led_pulse_parameters.pulse_period) && + str_to_effect_type(tokens[8], &cmd->led_pulse_parameters.effect_type) && + str_to_float(tokens[9], &cmd->led_pulse_parameters.effect_speed) && + str_to_uint8(tokens[10], &cmd->led_pulse_parameters.effect_step)) { - cmd->sub_command = PULSE; - if (str_to_float(tokens[4], &cmd->led_parameters.min_intensity) && - str_to_float(tokens[5], &cmd->led_parameters.max_intensity) && - str_to_uint8(tokens[6], &cmd->led_parameters.pulse_count) && - str_to_float(tokens[7], &cmd->led_parameters.pulse_period) && - str_to_effect_type(tokens[8], &cmd->led_parameters.effect_type) && - str_to_float(tokens[9], &cmd->led_parameters.effect_speed) && - str_to_uint8(tokens[10], &cmd->led_parameters.effect_step)) - { - ret = E_TUXDRV_NOERROR; - } + ret = E_TUXDRV_NOERROR; } - else if (strcmp(tokens[2], "SET") == 0) + } + else if (strcmp(tokens[2], "SET") == 0) + { + cmd->sub_command = SET; + if (str_to_leds_t(tokens[3], &cmd->led_set_parameters.leds) && + str_to_float(tokens[4], &cmd->led_set_parameters.intensity) && + str_to_effect_type(tokens[5], &cmd->led_set_parameters.effect_type) && + str_to_float(tokens[6], &cmd->led_set_parameters.effect_speed) && + str_to_uint8(tokens[7], &cmd->led_set_parameters.effect_step)) { - cmd->sub_command = SET; - if (str_to_float(tokens[4], &cmd->led_parameters.intensity) && - str_to_effect_type(tokens[5], &cmd->led_parameters.effect_type) && - str_to_float(tokens[6], &cmd->led_parameters.effect_speed) && - str_to_uint8(tokens[7], &cmd->led_parameters.effect_step)) - { - ret = E_TUXDRV_NOERROR; - } + ret = E_TUXDRV_NOERROR; } } return ret; @@ -434,8 +441,8 @@ else if (strcmp(tokens[2], "ON") == 0) { cmd->sub_command = ON; - if (str_to_uint8(tokens[3], &cmd->mouth_parameters.nr_movements) && - str_to_state_t(tokens[4], &cmd->mouth_parameters.state)) + if (str_to_uint8(tokens[3], &cmd->mouth_on_parameters.nr_movements) && + str_to_state_t(tokens[4], &cmd->mouth_on_parameters.state)) { ret = E_TUXDRV_NOERROR; } @@ -443,8 +450,8 @@ else if (strcmp(tokens[2], "ON_DURING") == 0) { cmd->sub_command = ON_DURING; - if (str_to_float(tokens[3], &cmd->mouth_parameters.duration) && - str_to_state_t(tokens[4], &cmd->mouth_parameters.state)) + if (str_to_float(tokens[3], &cmd->mouth_on_during_parameters.duration) && + str_to_state_t(tokens[4], &cmd->mouth_on_during_parameters.state)) { ret = E_TUXDRV_NOERROR; } @@ -468,8 +475,8 @@ if (strcmp(tokens[2], "PLAY") == 0) { cmd->sub_command = PLAY; - if (str_to_uint8(tokens[3], &cmd->sound_flash_parameters.track) && - str_to_float(tokens[4], &cmd->sound_flash_parameters.volume)) + if (str_to_uint8(tokens[3], &cmd->sound_flash_play_parameters.track) && + str_to_float(tokens[4], &cmd->sound_flash_play_parameters.volume)) { ret = E_TUXDRV_NOERROR; } @@ -488,7 +495,7 @@ if (strcmp(tokens[2], "LEFT_ON") == 0) { cmd->sub_command = LEFT_ON; - if (str_to_uint8(tokens[3], &cmd->spinning_parameters.nr_qturns)) + if (str_to_uint8(tokens[3], &cmd->spinning_on_parameters.nr_qturns)) { ret = E_TUXDRV_NOERROR; } @@ -496,7 +503,7 @@ else if (strcmp(tokens[2], "LEFT_ON_DURING") == 0) { cmd->sub_command = LEFT_ON_DURING; - if (str_to_float(tokens[3], &cmd->spinning_parameters.duration)) + if (str_to_float(tokens[3], &cmd->spinning_on_during_parameters.duration)) { ret = E_TUXDRV_NOERROR; } @@ -504,7 +511,7 @@ else if (strcmp(tokens[2], "RIGHT_ON") == 0) { cmd->sub_command = RIGHT_ON; - if (str_to_uint8(tokens[3], &cmd->spinning_parameters.nr_qturns)) + if (str_to_uint8(tokens[3], &cmd->spinning_on_parameters.nr_qturns)) { ret = E_TUXDRV_NOERROR; } @@ -512,7 +519,7 @@ else if (strcmp(tokens[2], "RIGHT_ON_DURING") == 0) { cmd->sub_command = RIGHT_ON_DURING; - if (str_to_float(tokens[3], &cmd->spinning_parameters.duration)) + if (str_to_float(tokens[3], &cmd->spinning_on_during_parameters.duration)) { ret = E_TUXDRV_NOERROR; } @@ -525,7 +532,7 @@ else if (strcmp(tokens[2], "SPEED") == 0) { cmd->sub_command = SPEED; - if (str_to_uint8(tokens[3], &cmd->spinning_parameters.speed)) + if (str_to_uint8(tokens[3], &cmd->spinning_speed_parameters.speed)) { ret = E_TUXDRV_NOERROR; } @@ -554,8 +561,8 @@ else if (strcmp(tokens[2], "ON") == 0) { cmd->sub_command = ON; - if (str_to_uint8(tokens[3], &cmd->wings_parameters.nr_movements) && - str_to_state_t(tokens[4], &cmd->wings_parameters.state)) + if (str_to_uint8(tokens[3], &cmd->wings_on_parameters.nr_movements) && + str_to_state_t(tokens[4], &cmd->wings_on_parameters.state)) { ret = E_TUXDRV_NOERROR; } @@ -563,10 +570,9 @@ else if (strcmp(tokens[2], "ON_DURING") == 0) { cmd->sub_command = ON_DURING; - if (str_to_float(tokens[3], &cmd->wings_parameters.duration) && - str_to_state_t(tokens[4], &cmd->wings_parameters.state)) + if (str_to_float(tokens[3], &cmd->wings_on_during_parameters.duration) && + str_to_state_t(tokens[4], &cmd->wings_on_during_parameters.state)) { - fprintf(stderr, "parse duration = %f\n", cmd->wings_parameters.duration); ret = E_TUXDRV_NOERROR; } cmd->sub_command = ON_DURING; @@ -580,7 +586,7 @@ else if (strcmp(tokens[2], "SPEED") == 0) { cmd->sub_command = SPEED; - if (str_to_uint8(tokens[3], &cmd->wings_parameters.speed)) + if (str_to_uint8(tokens[3], &cmd->wings_speed_parameters.speed)) { ret = E_TUXDRV_NOERROR; } @@ -711,7 +717,7 @@ tux_audio_cmd_channel_tts(); break; case MUTE: - tux_audio_cmd_mute(cmd->audio_parameters.muteflag); + tux_audio_cmd_mute(cmd->audio_mute_parameters.muteflag); break; default: /* should not occur */ log_error("execute invalid audio command"); @@ -727,13 +733,13 @@ switch (cmd->sub_command) { case ON: tux_eyes_cmd_on( - cmd->eyes_parameters.nr_movements, - cmd->eyes_parameters.state); + cmd->eyes_on_parameters.nr_movements, + cmd->eyes_on_parameters.state); break; case ON_DURING: tux_eyes_cmd_on_during( - cmd->eyes_parameters.duration, - cmd->eyes_parameters.state); + cmd->eyes_on_during_parameters.duration, + cmd->eyes_on_during_parameters.state); break; case OPEN: tux_eyes_cmd_open(); @@ -763,8 +769,8 @@ tux_user_inputs_cmd_ir_off(); case SEND: tux_user_inputs_cmd_ir_send( - cmd->ir_parameters.address, - cmd->ir_parameters.command); + cmd->ir_send_parameters.address, + cmd->ir_send_parameters.command); break; default: /* should not occur */ log_error("execute invalid ir command"); @@ -780,15 +786,15 @@ switch (cmd->sub_command) { case ON: tux_leds_cmd_set( - cmd->led_parameters.leds, - cmd->led_parameters.intensity, + cmd->led_on_parameters.leds, + cmd->led_on_parameters.intensity, NONE, 0, 0); break; case OFF: tux_leds_cmd_set( - cmd->led_parameters.leds, + cmd->led_off_parameters.leds, 0.0, NONE, 0, @@ -796,33 +802,33 @@ break; case PULSE: tux_leds_cmd_pulse( - cmd->led_parameters.leds, - cmd->led_parameters.min_intensity, - cmd->led_parameters.max_intensity, - cmd->led_parameters.pulse_count, - cmd->led_parameters.pulse_period, - cmd->led_parameters.effect_type, - cmd->led_parameters.effect_speed, - cmd->led_parameters.effect_step); + cmd->led_pulse_parameters.leds, + cmd->led_pulse_parameters.min_intensity, + cmd->led_pulse_parameters.max_intensity, + cmd->led_pulse_parameters.pulse_count, + cmd->led_pulse_parameters.pulse_period, + cmd->led_pulse_parameters.effect_type, + cmd->led_pulse_parameters.effect_speed, + cmd->led_pulse_parameters.effect_step); break; case BLINK: tux_leds_cmd_pulse( - cmd->led_parameters.leds, + cmd->led_blink_parameters.leds, 0.0, 1.0, - cmd->led_parameters.pulse_count, - cmd->led_parameters.pulse_period, + cmd->led_blink_parameters.pulse_count, + cmd->led_blink_parameters.pulse_period, NONE, 0, 0); break; case SET: tux_leds_cmd_set( - cmd->led_parameters.leds, - cmd->led_parameters.intensity, - cmd->led_parameters.effect_type, - cmd->led_parameters.effect_speed, - cmd->led_parameters.effect_step); + cmd->led_set_parameters.leds, + cmd->led_set_parameters.intensity, + cmd->led_set_parameters.effect_type, + cmd->led_set_parameters.effect_speed, + cmd->led_set_parameters.effect_step); break; default: /* should not occur */ log_error("execute invalid led command"); @@ -838,13 +844,13 @@ switch (cmd->sub_command) { case ON: tux_mouth_cmd_on( - cmd->mouth_parameters.nr_movements, - cmd->mouth_parameters.state); + cmd->mouth_on_parameters.nr_movements, + cmd->mouth_on_parameters.state); break; case ON_DURING: tux_mouth_cmd_on_during( - cmd->mouth_parameters.duration, - cmd->mouth_parameters.state); + cmd->mouth_on_during_parameters.duration, + cmd->mouth_on_during_parameters.state); break; case OPEN: tux_mouth_cmd_open(); @@ -869,8 +875,8 @@ switch (cmd->sub_command) { case PLAY: tux_sound_flash_cmd_play( - cmd->sound_flash_parameters.track, - cmd->sound_flash_parameters.volume); + cmd->sound_flash_play_parameters.track, + cmd->sound_flash_play_parameters.volume); break; default: /* should not occur */ log_error("execute invalid sound flash command"); @@ -885,22 +891,22 @@ { switch (cmd->sub_command) { case LEFT_ON: - tux_spinning_cmd_left_on(cmd->spinning_parameters.nr_qturns); + tux_spinning_cmd_left_on(cmd->spinning_on_parameters.nr_qturns); break; case RIGHT_ON: - tux_spinning_cmd_right_on(cmd->spinning_parameters.nr_qturns); + tux_spinning_cmd_right_on(cmd->spinning_on_parameters.nr_qturns); break; case LEFT_ON_DURING: - tux_spinning_cmd_left_on_during(cmd->spinning_parameters.duration); + tux_spinning_cmd_left_on_during(cmd->spinning_on_during_parameters.duration); break; case RIGHT_ON_DURING: - tux_spinning_cmd_right_on_during(cmd->spinning_parameters.duration); + tux_spinning_cmd_right_on_during(cmd->spinning_on_during_parameters.duration); break; case OFF: tux_spinning_cmd_off(); break; case SPEED: - tux_spinning_cmd_speed(cmd->spinning_parameters.speed); + tux_spinning_cmd_speed(cmd->spinning_speed_parameters.speed); break; default: /* should not occur */ log_error("execute invalid spinning command"); @@ -916,14 +922,13 @@ switch (cmd->sub_command) { case ON: tux_wings_cmd_on( - cmd->wings_parameters.nr_movements, - cmd->wings_parameters.state); + cmd->wings_on_parameters.nr_movements, + cmd->wings_on_parameters.state); break; case ON_DURING: - fprintf(stderr, "duration = %f\n", cmd->wings_parameters.duration); tux_wings_cmd_on_during( - cmd->wings_parameters.duration, - cmd->wings_parameters.state); + cmd->wings_on_during_parameters.duration, + cmd->wings_on_during_parameters.state); break; case OFF: tux_wings_cmd_off(); @@ -935,7 +940,7 @@ tux_wings_cmd_down(); break; case SPEED: - tux_wings_cmd_speed(cmd->wings_parameters.speed); + tux_wings_cmd_speed(cmd->wings_speed_parameters.speed); break; default: /* should not occur */ log_error("execute invalid wings command"); @@ -1120,7 +1125,6 @@ { if (curtime >= user_cmd_stack.cmd_list[i].timeout) { - fprintf(stderr, "executing user command %d\n", i); execute_command(&user_cmd_stack.cmd_list[i]); /* next two commands are faster than a memset writing a null byte to the first char of cmd is sufficient @@ -1134,7 +1138,6 @@ { if (curtime >= sys_cmd_stack.cmd_list[i].timeout) { - fprintf(stderr, "executing system command %d\n", i); execute_command(&sys_cmd_stack.cmd_list[i]); sys_cmd_stack.cmd_list[i].timeout = 0; sys_cmd_stack.cmd_list[i].command_group = NO_CMD; Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c 2008-05-08 16:40:57 UTC (rev 1138) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c 2008-05-12 08:03:59 UTC (rev 1139) @@ -118,19 +118,15 @@ switch (final_state) { case FINAL_ST_UNDEFINED: - fprintf(stderr, "1"); cmd.sub_command = OFF; break; case FINAL_ST_OPEN_UP: - fprintf(stderr, "2"); cmd.sub_command = OPEN; break; case FINAL_ST_CLOSE_DOWN: - fprintf(stderr, "3"); cmd.sub_command = CLOSE; break; case FINAL_ST_STOP: - fprintf(stderr, "4"); cmd.sub_command = OFF; break; } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-08 16:40:57 UTC (rev 1138) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-12 08:03:59 UTC (rev 1139) @@ -29,12 +29,14 @@ #define CMDSIZE 1024 +/* command groups */ typedef enum { NO_CMD = 0, TUX_CMD, RAW_CMD } tux_command_group_t; +/* commands */ typedef enum { AUDIO, EYES, @@ -46,6 +48,7 @@ WINGS } tux_command_t; +/* subcommands */ typedef enum { BLINK, CHANNEL_GENERAL, @@ -69,26 +72,55 @@ UP } tux_sub_command_t; +/* + The data structures for the invididual commands. + It was decided to make separate structures for each subcommand + (instead of e.g. clubbing all parameters together) + Rationale: + separate structures make it more straigthforward to add a new subcommand. + separate structures make it simpler to create a C api. + depending on the compiler this could also result in stricter type + checking + For now the types are not used to communicate between parser and + individual functions. + Note that storage waste by duplicate data fields is recouped + as all data is in a union +*/ + +/* audio */ typedef struct { bool muteflag; -} audio_parameters_t; +} audio_mute_parameters_t; +/* eyes */ typedef struct { + move_final_state_t state; unsigned char nr_movements; +} eyes_on_parameters_t; + +typedef struct { move_final_state_t state; float duration; -} eyes_parameters_t; +} eyes_on_during_parameters_t; +/* ir */ typedef struct { unsigned char address; unsigned char command; -} ir_parameters_t; +} ir_send_parameters_t; +/* leds */ typedef struct { leds_t leds; - unsigned char nr_blinks; - float duration; float intensity; +} led_on_parameters_t; + +typedef struct { + leds_t leds; +} led_off_parameters_t; + +typedef struct { + leds_t leds; float min_intensity; float max_intensity; unsigned char pulse_count; @@ -96,39 +128,76 @@ effect_type_t effect_type; float effect_speed; unsigned char effect_step; -} led_parameters_t; +} led_pulse_parameters_t; typedef struct { + leds_t leds; + unsigned char pulse_count; + float pulse_period; +} led_blink_parameters_t; + +typedef struct { + leds_t leds; + float intensity; + effect_type_t effect_type; + float effect_speed; + unsigned char effect_step; +} led_set_parameters_t; + +/* mouth */ +typedef struct { + move_final_state_t state; unsigned char nr_movements; +} mouth_on_parameters_t; + +typedef struct { move_final_state_t state; float duration; -} mouth_parameters_t; +} mouth_on_during_parameters_t; +/* sound flash */ typedef struct { unsigned char track; float volume; -} sound_flash_parameters_t; +} sound_flash_play_parameters_t; +/* spinning */ typedef struct { unsigned char nr_qturns; +} spinning_on_parameters_t; + +typedef struct { float duration; +} spinning_on_during_parameters_t; + +typedef struct { unsigned char speed; -} spinning_parameters_t; +} spinning_speed_parameters_t; +/* wings */ typedef struct { + move_final_state_t state; unsigned char nr_movements; +} wings_on_parameters_t; + +typedef struct { move_final_state_t state; float duration; +} wings_on_during_parameters_t; + +typedef struct { unsigned char speed; -} wings_parameters_t; +} wings_speed_parameters_t; +/* raw */ typedef struct { unsigned char raw[5]; } raw_parameters_t; /* -this struct is still under development -plan is to split cmd into various fields (making it typed) + this is the struct which contains all commands and arguments + the union is there to save storage + based upon command/sub_command we exactly know which union field we need */ typedef struct { double timeout; @@ -136,15 +205,25 @@ tux_command_t command; tux_sub_command_t sub_command; union { - audio_parameters_t audio_parameters; - eyes_parameters_t eyes_parameters; - ir_parameters_t ir_parameters; - led_parameters_t led_parameters; - mouth_parameters_t mouth_parameters; - sound_flash_parameters_t sound_flash_parameters; - spinning_parameters_t spinning_parameters; - wings_parameters_t wings_parameters; - raw_parameters_t raw_parameters; + audio_mute_parameters_t audio_mute_parameters; + eyes_on_parameters_t eyes_on_parameters; + eyes_on_during_parameters_t eyes_on_during_parameters; + ir_send_parameters_t ir_send_parameters; + led_on_parameters_t led_on_parameters; + led_off_parameters_t led_off_parameters; + led_pulse_parameters_t led_pulse_parameters; + led_blink_parameters_t led_blink_parameters; + led_set_parameters_t led_set_parameters; + mouth_on_parameters_t mouth_on_parameters; + mouth_on_during_parameters_t mouth_on_during_parameters; + sound_flash_play_parameters_t sound_flash_play_parameters; + spinning_on_parameters_t spinning_on_parameters; + spinning_on_during_parameters_t spinning_on_during_parameters; + spinning_speed_parameters_t spinning_speed_parameters; + wings_on_parameters_t wings_on_parameters; + wings_on_during_parameters_t wings_on_during_parameters; + wings_speed_parameters_t wings_speed_parameters; + raw_parameters_t raw_parameters; }; } delay_cmd_t; |
From: eFfeM <c2m...@c2...> - 2008-05-08 16:41:40
|
Author: eFfeM Date: 2008-05-08 18:40:57 +0200 (Thu, 08 May 2008) New Revision: 1138 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt Log: fixed bug in state enum split parsing and inserting removed all character commands from eyes/mouth/spinnng/wings this concludes the cmd_parsing changes (apart from bugfixng) Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -133,41 +133,41 @@ * */ static bool -str_to_state_t(const char *conststr, state_t *state) +str_to_state_t(const char *conststr, move_final_state_t *state) { if (!strcmp(conststr, "NDEF")) { - *state = UNDEFINED; + *state = FINAL_ST_UNDEFINED; return true; } if (!strcmp(conststr, "UNDEFINED")) { - *state = UNDEFINED; + *state = FINAL_ST_UNDEFINED; return true; } if (!strcmp(conststr, "OPEN")) { - *state = OPENED; + *state = FINAL_ST_OPEN_UP; return true; } if (!strcmp(conststr, "UP")) { - return 1; - *state = OPENED; + *state = FINAL_ST_OPEN_UP; + return true; } if (!strcmp(conststr, "CLOSE")) { - *state = CLOSED; + *state = FINAL_ST_CLOSE_DOWN; return true; } if (!strcmp(conststr, "DOWN")) { - *state = CLOSED; + *state = FINAL_ST_CLOSE_DOWN; return true; } if (!strcmp(conststr, "STOP")) { - *state = STOP; + *state = FINAL_ST_STOP; return true; } return false; @@ -566,6 +566,7 @@ if (str_to_float(tokens[3], &cmd->wings_parameters.duration) && str_to_state_t(tokens[4], &cmd->wings_parameters.state)) { + fprintf(stderr, "parse duration = %f\n", cmd->wings_parameters.duration); ret = E_TUXDRV_NOERROR; } cmd->sub_command = ON_DURING; @@ -919,6 +920,7 @@ cmd->wings_parameters.state); break; case ON_DURING: + fprintf(stderr, "duration = %f\n", cmd->wings_parameters.duration); tux_wings_cmd_on_during( cmd->wings_parameters.duration, cmd->wings_parameters.state); @@ -993,11 +995,12 @@ } cmd->command_group = NO_CMD; } + /** * */ static TuxDrvError -insert_cmd(float delay, const char *cmd_str, cmd_stack_t *stack) +insert_command(float delay, delay_cmd_t *cmd, cmd_stack_t *stack) { TuxDrvError ret = E_TUXDRV_STACKOVERFLOW; int i; @@ -1007,16 +1010,9 @@ { if (stack->cmd_list[i].command_group == NO_CMD) { - ret = parse_command(cmd_str, &(stack->cmd_list[i])); - if (ret == E_TUXDRV_NOERROR) - { - stack->cmd_list[i].timeout = delay + curtime; - } - else - { - /* might be overwritten */ - stack->cmd_list[i].command_group = NO_CMD; - } + stack->cmd_list[i] = *cmd; + stack->cmd_list[i].timeout = delay + curtime; + ret = E_TUXDRV_NOERROR; break; } } @@ -1027,23 +1023,39 @@ * */ LIBLOCAL TuxDrvError -tux_cmd_parser_insert_delay_command(float delay, const char *cmd_str, - bool sys_cmd) +tux_cmd_parser_insert_sys_command(float delay, delay_cmd_t *cmd) { - TuxDrvError ret = E_TUXDRV_STACKOVERFLOW; + TuxDrvError ret; #ifdef USE_MUTEX mutex_lock(__stack_mutex); #endif - if (sys_cmd) + ret = insert_command(delay, cmd, &sys_cmd_stack); + +#ifdef USE_MUTEX + mutex_unlock(__stack_mutex); +#endif + return ret; +} + +/** + * + */ +LIBLOCAL TuxDrvError +tux_cmd_parser_insert_user_command(float delay, const char *cmd_str) +{ + TuxDrvError ret; + delay_cmd_t cmd; + +#ifdef USE_MUTEX + mutex_lock(__stack_mutex); +#endif + ret = parse_command(cmd_str, &cmd); + if (ret == E_TUXDRV_NOERROR) { - ret = insert_cmd(delay, cmd_str, &sys_cmd_stack); + ret = insert_command(delay, &cmd, &user_cmd_stack); } - else - { - ret = insert_cmd(delay, cmd_str, &user_cmd_stack); - } #ifdef USE_MUTEX mutex_unlock(__stack_mutex); @@ -1108,6 +1120,7 @@ { if (curtime >= user_cmd_stack.cmd_list[i].timeout) { + fprintf(stderr, "executing user command %d\n", i); execute_command(&user_cmd_stack.cmd_list[i]); /* next two commands are faster than a memset writing a null byte to the first char of cmd is sufficient @@ -1121,6 +1134,7 @@ { if (curtime >= sys_cmd_stack.cmd_list[i].timeout) { + fprintf(stderr, "executing system command %d\n", i); execute_command(&sys_cmd_stack.cmd_list[i]); sys_cmd_stack.cmd_list[i].timeout = 0; sys_cmd_stack.cmd_list[i].command_group = NO_CMD; @@ -1147,7 +1161,7 @@ if (i == 2) { - return tux_cmd_parser_insert_delay_command(delay, cmd_str, false); + return tux_cmd_parser_insert_user_command(delay, cmd_str); } return E_TUXDRV_NOERROR; Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h 2008-05-08 16:40:57 UTC (rev 1138) @@ -24,6 +24,7 @@ #include <stdbool.h> #include "tux_error.h" +#include "tux_types.h" #define TOKENSIZE 1024 #define MAXNRTOKENS 256 @@ -37,8 +38,10 @@ int max_tokens, const char *delimiters); extern TuxDrvError tux_cmd_parser_parse_command(const char *cmd_str); extern bool tux_cmd_parser_clear_delay_commands(void); -extern TuxDrvError tux_cmd_parser_insert_delay_command(float delay, - const char *cmd_str, bool sys_cmd); +extern TuxDrvError tux_cmd_parser_insert_sys_command(float delay, + delay_cmd_t *cmd); +extern TuxDrvError tux_cmd_parser_insert_user_command(float delay, + const char *cmd_str); extern void tux_cmd_parser_delay_stack_perform(void); extern TuxDrvError tux_cmd_parser_parse_macro(const char *macro_str); extern TuxDrvError tux_cmd_parser_parse_file(const char *file_path); Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -285,7 +285,7 @@ else { log_debug("Perform a delayed command : [%s], %f", cmd_str, delay); - return tux_cmd_parser_insert_delay_command(delay, cmd_str, false); + return tux_cmd_parser_insert_user_command(delay, cmd_str); } } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -99,6 +99,7 @@ { bool ret; data_frame frame = {EYES_BLINK_CMD, 0, 0, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, EYES }; /* Short movements */ if (timeout < 0.3) @@ -116,22 +117,19 @@ switch (final_state) { case FINAL_ST_UNDEFINED: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:OFF", true); + cmd.sub_command = OFF; break; case FINAL_ST_OPEN_UP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:OPEN", true); + cmd.sub_command = OPEN; break; case FINAL_ST_CLOSE_DOWN: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:CLOSE", true); + cmd.sub_command = CLOSE; break; case FINAL_ST_STOP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:OFF", true); + cmd.sub_command = OFF; break; } + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -91,6 +91,7 @@ return tux_movement_cmd_on(MOVE_MOUTH, counter, final_state); } +#include <stdio.h> /** * */ @@ -99,6 +100,7 @@ { bool ret; data_frame frame = {MOUTH_MOVE_CMD, 0, 0, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, MOUTH }; /* Short movements */ if (timeout < 0.3) @@ -116,22 +118,23 @@ switch (final_state) { case FINAL_ST_UNDEFINED: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:OFF", true); + fprintf(stderr, "1"); + cmd.sub_command = OFF; break; case FINAL_ST_OPEN_UP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:OPEN", true); + fprintf(stderr, "2"); + cmd.sub_command = OPEN; break; case FINAL_ST_CLOSE_DOWN: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:CLOSE", true); + fprintf(stderr, "3"); + cmd.sub_command = CLOSE; break; case FINAL_ST_STOP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:OFF", true); + fprintf(stderr, "4"); + cmd.sub_command = OFF; break; } + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -125,11 +125,12 @@ * */ static bool -tux_spinning_cmd_on_during(float timeout, unsigned char cmd, +tux_spinning_cmd_on_during(float timeout, unsigned char command, move_body_part_t movement) { bool ret; - data_frame frame = {cmd, 0, 5, 0}; + data_frame frame = { command, 0, 5, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, SPINNING, OFF }; /* Short movements */ if (timeout < 0.3) @@ -145,8 +146,7 @@ return false; } - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:SPINNING:OFF", true); + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-08 16:40:57 UTC (rev 1138) @@ -22,6 +22,7 @@ #define _TUX_TYPES_H_ #include "tux_leds.h" +#include "tux_movements.h" typedef unsigned char data_frame[4]; typedef unsigned char raw_frame[5]; @@ -68,20 +69,13 @@ UP } tux_sub_command_t; -typedef enum { - UNDEFINED, - CLOSED, - OPENED, - STOP -} state_t; - typedef struct { bool muteflag; } audio_parameters_t; typedef struct { unsigned char nr_movements; - state_t state; + move_final_state_t state; float duration; } eyes_parameters_t; @@ -106,7 +100,7 @@ typedef struct { unsigned char nr_movements; - state_t state; + move_final_state_t state; float duration; } mouth_parameters_t; @@ -123,7 +117,7 @@ typedef struct { unsigned char nr_movements; - state_t state; + move_final_state_t state; float duration; unsigned char speed; } wings_parameters_t; Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -101,6 +101,7 @@ { bool ret; data_frame frame = {WINGS_WAVE_CMD, 0, 5, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, WINGS }; /* Short movements */ if (timeout < 0.3) @@ -118,22 +119,19 @@ switch (final_state) { case FINAL_ST_UNDEFINED: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:OFF", true); + cmd.sub_command = OFF; break; case FINAL_ST_OPEN_UP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:UP", true); + cmd.sub_command = UP; break; case FINAL_ST_CLOSE_DOWN: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:DOWN", true); + cmd.sub_command = DOWN; break; case FINAL_ST_STOP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:OFF", true); + cmd.sub_command = OFF; break; } + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt 2008-05-08 16:40:57 UTC (rev 1138) @@ -69,9 +69,9 @@ Variation : 0 Symbolic version : [FuxUSB_0.4.1] - Sound flash - Number of sounds : 10 - Last used block : 9 - Available record time (sec) : 59 + Number of sounds : 17 + Last used block : 52 + Available record time (sec) : 38 - ID connection - number : [0] Modified: software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt 2008-05-08 16:40:57 UTC (rev 1138) @@ -3,5 +3,7 @@ 2.0:TUX_CMD:LED:SET:LED_BOTH,1.0,GRADIENT_DELTA,3.0,30 1.0:TUX_CMD:SOUND_FLASH:PLAY:1:100 1.0:TUX_CMD:WINGS:ON_DURING:2.0,DOWN -3.0:TUX_CMD:SPINNING:LEFT_ON:1 -7.0:TUX_CMD:SPINNING:RIGHT_ON:5 +4.0:TUX_CMD:EYES:ON_DURING:2.0,OPEN +7.0:TUX_CMD:MOUTH:ON_DURING:2.0,CLOSE +10.0:TUX_CMD:SPINNING:LEFT_ON:1 +12.0:TUX_CMD:SPINNING:RIGHT_ON:5 |
From: jaguarondi <c2m...@c2...> - 2008-05-08 09:55:07
|
Author: jaguarondi Date: 2008-05-08 11:55:10 +0200 (Thu, 08 May 2008) New Revision: 1137 Modified: firmware/hex_dev/fuxusb.hex Log: * Updated fuxusb.hex with the latest released version. Modified: firmware/hex_dev/fuxusb.hex =================================================================== (Binary files differ) |
From: jaguarondi <c2m...@c2...> - 2008-05-08 09:52:12
|
Author: jaguarondi Date: 2008-05-08 11:52:14 +0200 (Thu, 08 May 2008) New Revision: 1136 Modified: firmware/hex_dev/tuxaudio.hex firmware/hex_dev/tuxcore.hex Log: * Updated the hex files with the refactored I2C/communication modules. Modified: firmware/hex_dev/tuxaudio.hex =================================================================== (Binary files differ) Modified: firmware/hex_dev/tuxcore.hex =================================================================== (Binary files differ) |
From: jaguarondi <c2m...@c2...> - 2008-05-08 09:50:31
|
Author: jaguarondi Date: 2008-05-08 11:50:32 +0200 (Thu, 08 May 2008) New Revision: 1135 Modified: firmware/tuxaudio/trunk/version.h firmware/tuxcore/trunk/version.h Log: * Next release will be 0.5.0 as the I2C changed completely. Modified: firmware/tuxaudio/trunk/version.h =================================================================== --- firmware/tuxaudio/trunk/version.h 2008-05-08 09:49:53 UTC (rev 1134) +++ firmware/tuxaudio/trunk/version.h 2008-05-08 09:50:32 UTC (rev 1135) @@ -29,8 +29,8 @@ */ #define VER_MAJOR 0 -#define VER_MINOR 4 -#define VER_UPDATE 1 +#define VER_MINOR 5 +#define VER_UPDATE 0 /** RELEASE should be set to '1' prior to tagging a release, and reset * immediately after. It's like appending (SVN_UNRELEASED) to a version number * when equal to '0'. */ Modified: firmware/tuxcore/trunk/version.h =================================================================== --- firmware/tuxcore/trunk/version.h 2008-05-08 09:49:53 UTC (rev 1134) +++ firmware/tuxcore/trunk/version.h 2008-05-08 09:50:32 UTC (rev 1135) @@ -29,8 +29,8 @@ */ #define VER_MAJOR 0 -#define VER_MINOR 4 -#define VER_UPDATE 1 +#define VER_MINOR 5 +#define VER_UPDATE 0 /** RELEASE should be set to '1' prior to tagging a release, and reset * immediately after. It's like appending (SVN_UNRELEASED) to a version number * when equal to '0'. */ |
From: jaguarondi <c2m...@c2...> - 2008-05-08 09:49:55
|
Author: jaguarondi Date: 2008-05-08 11:49:53 +0200 (Thu, 08 May 2008) New Revision: 1134 Modified: firmware/tuxaudio/trunk/main.c Log: * Small cleanup. Modified: firmware/tuxaudio/trunk/main.c =================================================================== --- firmware/tuxaudio/trunk/main.c 2008-05-08 09:46:35 UTC (rev 1133) +++ firmware/tuxaudio/trunk/main.c 2008-05-08 09:49:53 UTC (rev 1134) @@ -38,12 +38,28 @@ #include "config.h" #include "PC_communication.h" -/* XXX AT26F004.h must be included here read_data function is used in - * send_info(). +/* + * Debug and test flags */ -#include "AT26F004.h" +#define DBG_STACK 0 +/* + * Stack Overflow detection + * + * Fill the ram with a value (0x5F) before the first initialization in order to + * detect any stack overflow just by looking to the memory at any breakpoint + */ +#if (DBG_STACK) +void init_ram(void) __attribute__ ((naked)) __attribute__ ((section(".init1"))); +void init_ram(void) +{ + uint8_t *ptr; + for (ptr = (uint8_t *) 0x0100; ptr < (uint8_t *) 0x0300; ptr++) + *ptr = 0x5F; +} +#endif + /* Set when sleep should be entered */ static uint8_t pre_sleep_delay = 0; @@ -94,29 +110,6 @@ leave_deep_sleep(); } -/* - * Debug and test flags - */ -#define DBG_STACK 0 - - -#if (DBG_STACK) -/* - * Stack Overflow detection - * - * Fill the ram with a value (0x5F) before the first initialization in order to - * detect any stack overflow just by looking to the memory at any breakpoint - */ -void init_ram(void) __attribute__ ((naked)) __attribute__ ((section(".init1"))); -void init_ram(void) -{ - uint8_t *ptr; - - for (ptr = (uint8_t *) 0x0100; ptr < (uint8_t *) 0x0300; ptr++) - *ptr = 0x5F; -} -#endif - /** * \brief Send sensors status * |
From: jaguarondi <c2m...@c2...> - 2008-05-08 09:46:36
|
Author: jaguarondi Date: 2008-05-08 11:46:35 +0200 (Thu, 08 May 2008) New Revision: 1133 Modified: firmware/tuxcore/trunk/communication.c firmware/tuxcore/trunk/communication.h firmware/tuxcore/trunk/i2c.c firmware/tuxcore/trunk/i2c.h firmware/tuxcore/trunk/main.c firmware/tuxcore/trunk/parser.c firmware/tuxcore/trunk/parser.h Log: * Here's the cleaning of the communication module in tuxcore. Things are much simpler and comments have been updated. I'm now done with the communication/I2C, except for bug fixes of course. Modified: firmware/tuxcore/trunk/communication.c =================================================================== --- firmware/tuxcore/trunk/communication.c 2008-05-07 19:54:14 UTC (rev 1132) +++ firmware/tuxcore/trunk/communication.c 2008-05-08 09:46:35 UTC (rev 1133) @@ -22,47 +22,36 @@ #include <avr/io.h> #include <avr/interrupt.h> +#include "common/defines.h" #include "global.h" #include "communication.h" #include "i2c.h" -/* - * Buffer for commands received from tuxaudio - */ -FIFO_INSTANCE(cmd_inbuf, CMD_IN_BUF_SIZE); -fifo_t *cmdin = FifoPointer(cmd_inbuf); +/** Size of the incoming stack buffer. */ +#define CMD_IN_BUF_SIZE 32 +/** Size of the outgoing stack buffer. */ +#define CMD_OUT_BUF_SIZE 32 -/* - * audioIntBuf is a single buffer for audio commands to be sent to the audio - * interface - * - * audioIntBufIdx should be set to the number of valid bytes in the buffer, - * depending on the number of parameters associated with the command. It is - * cleared when the command is sent so it can be used to check whether the - * buffer is empty or not. - */ -uint8_t audioIntBuf[CMD_SIZE]; /* single buffer for audio commands to be sent to the audio interface */ -uint8_t audioIntBufIdx = 0; /* index indicating the number of valid bytes in the buffer */ +FIFO_INSTANCE(cmdin_buf, CMD_IN_BUF_SIZE); +/** Stack for commands received from tuxaudio */ +fifo_t *cmdin = FifoPointer(cmdin_buf); -/** \brief Fifo used to buffer status datas which is to be sent over i2c to tuxaudio. - * Declare a fifo (statusFifo_s) and a pointer. - */ -FIFO_INSTANCE(statusFifo_s, CMD_OUT_BUF_SIZE); -fifo_t *statusFifo = FifoPointer(statusFifo_s); +FIFO_INSTANCE(cmdout_s, CMD_OUT_BUF_SIZE); +/** Stack for commands to tuxaudio */ +fifo_t *cmdout = FifoPointer(cmdout_s); -/* - * i2cSlaveReceiveService is called at the end of the i2c - * slave reception - * - * We basically do a transfer of the received data to the - * commandBuf here. +/** + * \brief Called at the end of the I2C slave reception to process received + * data. + * \param data_length Length of the data buffer. + * \param data Buffer of data received. */ -void i2cSlaveReceiveService(uint8_t length, uint8_t *data) +void i2c_slave_receive_service(uint8_t data_length, uint8_t *data) { uint8_t i; /* We should have the right number of bytes. */ - if (length != CMD_SIZE) + if (data_length != CMD_SIZE) { gerror = GERROR_INV_RECEIVE_LENGTH; return; @@ -77,38 +66,34 @@ FifoPut(cmdin, data[i]); } -/* - * i2cSlaveTransmitService is called when an I2C read transaction occurs. It - * fetches data to be sent to tuxaudio. +/** + * \brief Called when an I2C read transaction occurs. It fetches data to be + * sent to tuxaudio. + * \param data_length Length of the data buffer. + * \param data Buffer of data to be transmitted. + * \return 0 if nothing has to be sent, 1 otherwise. */ -uint8_t i2cSlaveTransmitService(uint8_t transmitDataLength, uint8_t* transmitData) +uint8_t i2c_slave_transmit_service(uint8_t data_length, uint8_t* data) { uint8_t i; - if (audioIntBufIdx) /* one audio command to send */ + if (!FifoLength(cmdout)) + return 0; + + for (i = 0; i < data_length; i++) { - for (i = 0; i < audioIntBufIdx; i++) - transmitData[i] = audioIntBuf[i]; - for (; i < 4; i++) - transmitData[i] = 0; - audioIntBufIdx = 0; - return 1; - } - else if (FifoLength(statusFifo)) /* if no audio and there's some status to send, get the next value */ - { - for (i = 0; i < 4; i++) /* so we loop 4 times here to get all command bytes */ + if (FifoGet(cmdout, &data[i]) != FIFO_OK) { - i2cSendData[i] = 0; - FifoGet(statusFifo, &transmitData[i]); /* TODO add a test on returned value to detect any corrupted fifo */ + gerror = GERROR_CMDOUTBUF_EMPTY; + return 0; } - return 1; } - return 0; + return 1; } -/* - * Get a command from the stack of received commands from tuxaudio. - * Returns 0 if the stack is empty, 1 if a command has been received +/** + * \brief Get a command from the stack of received commands from tuxaudio. + * \return 0 if the stack is empty, 1 if a command has been received * successfully. */ int8_t get_cmd(uint8_t *cmd) @@ -117,6 +102,7 @@ if (!FifoLength(cmdin)) return 0; + for (i=0; i<CMD_SIZE; i++) { if (FifoGet(cmdin, &cmd[i]) != FIFO_OK) @@ -128,20 +114,21 @@ return 1; }; -/* - * Add a command on the status stack to be sent to tuxaudio. - * Returns 0 if the stack is full, 1 if the command has been added +/** + * \brief Add a command on the status stack to be sent to tuxaudio. + * \param cmd Command array. + * \return 0 if the stack is full, 1 if the command has been added * successfully. */ -int8_t send_cmd(uint8_t *cmd) +int8_t queue_cmd(uint8_t *cmd) { uint8_t i; - if (FifoLength(statusFifo) > FifoSize(statusFifo) - CMD_SIZE) + if (FifoLength(cmdout) > FifoSize(cmdout) - CMD_SIZE) return 0; cli(); for (i=0; i<CMD_SIZE; i++) - if (FifoPut(statusFifo, cmd[i]) != FIFO_OK) + if (FifoPut(cmdout, cmd[i]) != FIFO_OK) { gerror = GERROR_CMDOUTBUF_FULL; return 0; @@ -150,41 +137,54 @@ return 1; } -/* - * Add a command on the status stack to be sent to tuxaudio. - * Returns 0 if the stack is full, 1 if the command has been added +/** + * \brief Add a command on the status stack to be sent to tuxaudio. + * \param cmd Command byte. + * \param param1 First parameter. + * \param param2 Second parameter. + * \param param3 Third parameter. + * \return 0 if the stack is full, 1 if the command has been added * successfully. */ -int8_t send_cmd_p(uint8_t cmd, uint8_t param1, uint8_t param2, \ +int8_t queue_cmd_p(uint8_t cmd, uint8_t param1, uint8_t param2, \ uint8_t param3) { uint8_t c[4] = {cmd , param1, param2, param3}; - return send_cmd(c); + return queue_cmd(c); } -/* - * Returns true if all commands are sent, false otherwise. +/** + * \brief Check if all commands are completely sent through I2C. + * \return true if all commands are sent, false otherwise. */ bool cmds_sent(void) { - return !(FifoLength(statusFifo) || audioIntBufIdx || - (i2c_get_status() == I2C_BUSY)); + return !(FifoLength(cmdout) || (i2c_get_status() == I2C_BUSY)); } +/** + * \brief Check if the command stack is empty. + * \return true if stack is empty. + * It's possible that the stack is empty but the command is in the I2C buffer. + * This doesn't ensure that the command has been received on the other side. + */ bool cmds_empty(void) { - return !FifoLength(statusFifo); + return !FifoLength(cmdout); } /** - * I2C communication initialization + * \brief I2C communication initialization * * Initialize the I2C interface in slave mode. */ void communication_init(void) { i2c_init(); - i2c_slave_receive_handler(i2cSlaveReceiveService); /* set receive function */ - i2c_slave_transmit_handler(i2cSlaveTransmitService); /* set receive function */ - FifoClear(statusFifo); + + /* Set receive and transmit handlers. */ + i2c_slave_receive_handler(i2c_slave_receive_service); + i2c_slave_transmit_handler(i2c_slave_transmit_service); + + FifoClear(cmdout); } Modified: firmware/tuxcore/trunk/communication.h =================================================================== --- firmware/tuxcore/trunk/communication.h 2008-05-07 19:54:14 UTC (rev 1132) +++ firmware/tuxcore/trunk/communication.h 2008-05-08 09:46:35 UTC (rev 1133) @@ -26,28 +26,14 @@ #include "common/commands.h" #include "fifo.h" -#define CMD_OUT_BUF_SIZE 32 -#define CMD_IN_BUF_SIZE 32 -#define CMD_SIZE 4 -#define AFTER_NACK_DELAY 6 -enum CMD_TYPE -{ AUDIO_CMD, STATUS_CMD }; - -extern uint8_t audioIntBuf[CMD_SIZE]; /* single buffer for commands received over i2c to control the audio interface */ -extern uint8_t audioIntBufIdx; /* index indicating the number of valid bytes in the buffer */ - -extern fifo_t *statusFifo; - -extern uint8_t errorBuf[2]; /* buffer for command errors, should contain command number and error code */ - void communication_init(void); + int8_t get_cmd(uint8_t *cmd); -int8_t send_cmd_p(uint8_t command, uint8_t param1, uint8_t param2, \ +int8_t queue_cmd_p(uint8_t command, uint8_t param1, uint8_t param2, \ uint8_t param3); -int8_t send_cmd(uint8_t *status); +int8_t queue_cmd(uint8_t *status); bool cmds_sent(void); bool cmds_empty(void); -uint8_t fetchCommands(void); #endif /* COMMUNICATION_H */ Modified: firmware/tuxcore/trunk/i2c.c =================================================================== --- firmware/tuxcore/trunk/i2c.c 2008-05-07 19:54:14 UTC (rev 1132) +++ firmware/tuxcore/trunk/i2c.c 2008-05-08 09:46:35 UTC (rev 1133) @@ -22,15 +22,16 @@ #include <avr/io.h> #include <avr/interrupt.h> +#include "common/defines.h" #include "i2c.h" #define TWI_TWCR (_BV(TWINT) | _BV(TWIE) | _BV(TWEA) | _BV(TWEN)) /* send/transmit buffer (outgoing data) */ -uint8_t i2cSendData[4]; +uint8_t i2cSendData[CMD_SIZE]; uint8_t i2cSendDataIndex; /* receive buffer (incoming data) */ -uint8_t i2cReceiveData[4]; +uint8_t i2cReceiveData[CMD_SIZE]; uint8_t i2cReceiveDataIndex; /* Modified: firmware/tuxcore/trunk/i2c.h =================================================================== --- firmware/tuxcore/trunk/i2c.h 2008-05-07 19:54:14 UTC (rev 1132) +++ firmware/tuxcore/trunk/i2c.h 2008-05-08 09:46:35 UTC (rev 1133) @@ -67,7 +67,6 @@ extern uint8_t i2cDeviceAddrRW; /* send/transmit buffer (outgoing data) */ -extern uint8_t i2cSendData[]; extern uint8_t i2cSendDataIndex; extern uint8_t i2cSendDataLength; Modified: firmware/tuxcore/trunk/main.c =================================================================== --- firmware/tuxcore/trunk/main.c 2008-05-07 19:54:14 UTC (rev 1132) +++ firmware/tuxcore/trunk/main.c 2008-05-08 09:46:35 UTC (rev 1133) @@ -203,7 +203,7 @@ if (pingCnt && cmds_empty()) { pingCnt--; - send_cmd_p(PONG_CMD, pingCnt, 0, 0); + queue_cmd_p(PONG_CMD, pingCnt, 0, 0); } /* Parse and execute received commands. */ parse_received_cmd(); @@ -253,16 +253,16 @@ static void updateStatus(void) { - send_cmd_p(STATUS_SENSORS1_CMD, gStatus.sw, gStatus.audio_play, + queue_cmd_p(STATUS_SENSORS1_CMD, gStatus.sw, gStatus.audio_play, gStatus.audio_status); - send_cmd_p(STATUS_PORTS_CMD, PINB, PINC, PIND); - send_cmd_p(STATUS_POSITION1_CMD, eyes_move_counter, mouth_move_counter, + queue_cmd_p(STATUS_PORTS_CMD, PINB, PINC, PIND); + queue_cmd_p(STATUS_POSITION1_CMD, eyes_move_counter, mouth_move_counter, flippers_move_counter); - send_cmd_p(STATUS_POSITION2_CMD, spin_move_counter, gStatus.pos, 0); + queue_cmd_p(STATUS_POSITION2_CMD, spin_move_counter, gStatus.pos, 0); if (led_f) { led_f = false; - send_cmd_p(STATUS_LED_CMD, left_led.status.intensity, + queue_cmd_p(STATUS_LED_CMD, left_led.status.intensity, right_led.status.intensity, left_led.status.fading | (left_led.status.pulsing << 1) | @@ -274,20 +274,20 @@ if (sensorsStatus & LIGHT_FLAG) /* send light measurement */ { sensorsStatus &= ~LIGHT_FLAG; - send_cmd_p(STATUS_LIGHT_CMD, gStatus.lightH, gStatus.lightL, gStatus.lightM); + queue_cmd_p(STATUS_LIGHT_CMD, gStatus.lightH, gStatus.lightL, gStatus.lightM); } if (sensorsStatus & BATTERY_FLAG) /* send battery measurement */ { sensorsStatus &= ~BATTERY_FLAG; - send_cmd_p(STATUS_BATTERY_CMD, gStatus.batteryH, gStatus.batteryL, gStatus.batteryS); + queue_cmd_p(STATUS_BATTERY_CMD, gStatus.batteryH, gStatus.batteryL, gStatus.batteryS); } if (ir_f) /* send received ir signals */ { ir_f--; - send_cmd_p(STATUS_IR_CMD, gStatus.ir, ir_f, gStatus.ir); + queue_cmd_p(STATUS_IR_CMD, gStatus.ir, ir_f, gStatus.ir); } if (gerror) - send_cmd_p(GERROR_CMD, TUXCORE_CPU_NUM, gerror, 0); + queue_cmd_p(GERROR_CMD, TUXCORE_CPU_NUM, gerror, 0); sensorsUpdate |= STATUS_SENT; } Modified: firmware/tuxcore/trunk/parser.c =================================================================== --- firmware/tuxcore/trunk/parser.c 2008-05-07 19:54:14 UTC (rev 1132) +++ firmware/tuxcore/trunk/parser.c 2008-05-08 09:46:35 UTC (rev 1133) @@ -75,29 +75,24 @@ /* Sound */ else if (cmd[0] == PLAY_SOUND_CMD) { - for (i = 0; i < 3; i++) /* forwards the cmd to the audio CPU */ - audioIntBuf[i] = cmd[i]; - audioIntBufIdx = 3; + /* Forward the cmd to the audio CPU. */ + queue_cmd(cmd); return; } else if (cmd[0] == MUTE_CMD) { - for (i = 0; i < 3; i++) /* forwards the cmd to the audio CPU */ - audioIntBuf[i] = cmd[i]; - audioIntBufIdx = 3; + /* Forward the cmd to the audio CPU. */ + queue_cmd(cmd); return; } - /* Sleep mode */ else if (cmd[0] == SLEEP_CMD) { - for (i = 0; i < 3; i++) /* forward the cmd to the audio CPU */ - audioIntBuf[i] = cmd[i]; - audioIntBufIdx = 3; + /* Forward the cmd to the audio CPU. */ + queue_cmd(cmd); cond_flags.sleep = COND_PRE_SLEEP; return; } - /* Version */ else if (cmd[0] == INFO_TUXCORE_CMD) { @@ -106,9 +101,9 @@ for (i = 0; i < 12; i++) info[i] = pgm_read_byte(p++); - send_cmd(&info[0]); - send_cmd(&info[4]); - send_cmd(&info[8]); + queue_cmd(&info[0]); + queue_cmd(&info[4]); + queue_cmd(&info[8]); return; } /* Reset condition flags */ Modified: firmware/tuxcore/trunk/parser.h =================================================================== --- firmware/tuxcore/trunk/parser.h 2008-05-07 19:54:14 UTC (rev 1132) +++ firmware/tuxcore/trunk/parser.h 2008-05-08 09:46:35 UTC (rev 1133) @@ -22,7 +22,7 @@ #ifndef PARSER_H #define PARSER_H -void parse_cmd(uint8_t cmd[CMD_SIZE]); +void parse_cmd(uint8_t cmd[]); void parse_received_cmd(void); #endif /* PARSER_H */ |
From: eFfeM <c2m...@c2...> - 2008-05-07 19:54:47
|
Author: eFfeM Date: 2008-05-07 21:54:14 +0200 (Wed, 07 May 2008) New Revision: 1132 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt software_suite_v2/middleware/tuxdriver/trunk/test/main.c software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt Log: This completes the changes to the parser. The code compiles and passes the basic tests from use_tux_driver more indepth testing needs to be done testing all kind of combinations... Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-07 14:39:47 UTC (rev 1131) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-07 19:54:14 UTC (rev 1132) @@ -44,11 +44,6 @@ #define NRCMDS 256 -#define check_result(funct_res) if (funct_res) \ - return E_TUXDRV_NOERROR; \ - else \ - return E_TUXDRV_INVALIDPARAMETER; - typedef struct { delay_cmd_t cmd_list[NRCMDS]; int cmd_count; @@ -62,20 +57,9 @@ #endif static bool cmd_parser_enable = true; - /** * */ -static inline bool match_token(tokens_t tokens, int i, int t_num, - const char *str, int t_count) -{ - return (i >= t_count) && (!strcmp(tokens[t_num], str)); -} - - -/** - * - */ LIBLOCAL void tux_cmd_parser_init(void) { @@ -148,64 +132,16 @@ /** * */ -static unsigned char -tux_movement_conststr_to_val(const char *conststr) +static bool +str_to_state_t(const char *conststr, state_t *state) { - if (!strcmp(conststr, "VERYLOW")) + if (!strcmp(conststr, "NDEF")) { - return 1; + *state = UNDEFINED; + return true; } - if (!strcmp(conststr, "LOW")) - { - return 2; - } - if (!strcmp(conststr, "MEDIUM")) - { - return 3; - } - if (!strcmp(conststr, "MIDHIGH")) - { - return 4; - } - if (!strcmp(conststr, "HIGH")) - { - return 5; - } if (!strcmp(conststr, "UNDEFINED")) { - return 0; - } - if (!strcmp(conststr, "OPEN")) - { - return 1; - } - if (!strcmp(conststr, "UP")) - { - return 1; - } - if (!strcmp(conststr, "CLOSE")) - { - return 2; - } - if (!strcmp(conststr, "DOWN")) - { - return 2; - } - if (!strcmp(conststr, "STOP")) - { - return 3; - } - return 0; -} - -/** - * - */ -static bool -str_to_state_t(const char *conststr, state_t *state) -{ - if (!strcmp(conststr, "UNDEFINED")) - { *state = UNDEFINED; return true; } @@ -240,31 +176,6 @@ /** * */ -static unsigned char -conststr_to_ledval(const char *conststr) -{ - if (!strcmp(conststr, "LED_NONE")) - { - return 0; - } - if (!strcmp(conststr, "LED_LEFT")) - { - return 1; - } - if (!strcmp(conststr, "LED_RIGHT")) - { - return 2; - } - if (!strcmp(conststr, "LED_BOTH")) - { - return 3; - } - return 0; -} - -/** - * - */ static bool str_to_leds_t(const char *conststr, leds_t *leds) { @@ -294,47 +205,6 @@ /** * */ -static unsigned char -conststr_to_effectval(const char *conststr) -{ - if (!strcmp(conststr, "UNAFFECTED")) - { - return 0; - } - if (!strcmp(conststr, "LAST")) - { - return 1; - } - if (!strcmp(conststr, "NONE")) - { - return 2; - } - if (!strcmp(conststr, "DEFAULT")) - { - return 3; - } - if (!strcmp(conststr, "FADE_DURATION")) - { - return 4; - } - if (!strcmp(conststr, "FADE_RATE")) - { - return 5; - } - if (!strcmp(conststr, "GRADIENT_NBR")) - { - return 6; - } - if (!strcmp(conststr, "GRADIENT_DELTA")) - { - return 7; - } - return 0; -} - -/** - * - */ static bool str_to_effect_type(const char *conststr, effect_type_t *effect_type) { @@ -382,532 +252,9 @@ } /** - * - */ -static bool -tux_cmd_parser_parse_raw_cmd(tokens_t tokens, int nr_tokens) -{ - raw_frame data = {0, 0, 0, 0}; - int r = 0; - int i; - - for (i = 0; i < TUX_SEND_LENGTH; i++) - { - if (hex_to_uint8(tokens[i], &data[i])) - { - r++; - } - } - - if (r < TUX_SEND_LENGTH) - { - return false; - } - - return tux_usb_send_raw(data); -} - -/* - The functions below implement the command parser. - else clauses are not needed since the check_result macro contains a return - an alternative implementation could use a table lookup and a switch - statement. This might clean up the code a little bit (to be investigated) -*/ - -/** * */ static TuxDrvError -tux_cmd_parser_handle_eyes_command(tokens_t tokens, int nr_tokens) -{ - /* EYES ON */ - if (match_token(tokens, nr_tokens, 2, "ON", 5)) - { - unsigned char counter; - - if (str_to_uint8(tokens[3], &counter)) - { - unsigned char final_state; - - final_state = tux_movement_conststr_to_val(tokens[4]); - check_result(tux_eyes_cmd_on(counter, final_state)); - } - } - /* EYES ON_DURING */ - if (match_token(tokens, nr_tokens, 2, "ON_DURING", 5)) - { - float timeout = 0; - - if (str_to_float(tokens[3], &timeout)) - { - unsigned char final_state; - - final_state = tux_movement_conststr_to_val(tokens[4]); - check_result(tux_eyes_cmd_on_during(timeout, final_state)); - } - } - /* EYES OPEN */ - if (match_token(tokens, nr_tokens, 2, "OPEN", 3)) - { - check_result(tux_eyes_cmd_open()); - } - /* EYES CLOSE */ - if (match_token(tokens, nr_tokens, 2, "CLOSE", 3)) - { - check_result(tux_eyes_cmd_close()); - } - /* EYES OFF */ - if (match_token(tokens, nr_tokens, 2, "OFF", 3)) - { - check_result(tux_eyes_cmd_off()); - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/** - * - */ -static TuxDrvError -tux_cmd_parser_handle_mouth_command(tokens_t tokens, int nr_tokens) -{ - /* MOUTH ON */ - if (match_token(tokens, nr_tokens, 2, "ON", 5)) - { - unsigned char counter; - - if (str_to_uint8(tokens[3], &counter)) - { - unsigned char final_state; - - final_state = tux_movement_conststr_to_val(tokens[4]); - check_result(tux_mouth_cmd_on(counter, final_state)); - } - } - /* MOUTH ON_DURING */ - if (match_token(tokens, nr_tokens, 2, "ON_DURING", 5)) - { - float timeout = 0; - - if (str_to_float(tokens[3], &timeout)) - { - unsigned char final_state; - - final_state = tux_movement_conststr_to_val(tokens[4]); - check_result(tux_mouth_cmd_on_during(timeout, final_state)); - } - } - /* MOUTH OPEN */ - if (match_token(tokens, nr_tokens, 2, "OPEN", 3)) - { - check_result(tux_mouth_cmd_open()); - } - /* MOUTH CLOSE */ - if (match_token(tokens, nr_tokens, 2, "CLOSE", 3)) - { - check_result(tux_mouth_cmd_close()); - } - /* MOUTH OFF */ - if (match_token(tokens, nr_tokens, 2, "OFF", 3)) - { - check_result(tux_mouth_cmd_off()); - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/** - * - */ -static TuxDrvError -tux_cmd_parser_handle_wings_command(tokens_t tokens, int nr_tokens) -{ - /* WINGS ON */ - if (match_token(tokens, nr_tokens, 2, "ON", 5)) - { - unsigned char counter; - - if (str_to_uint8(tokens[3], &counter)) - { - unsigned char final_state; - - final_state = tux_movement_conststr_to_val(tokens[4]); - check_result(tux_wings_cmd_on(counter, final_state)); - } - } - /* WINGS ON_DURING */ - if (match_token(tokens, nr_tokens, 2, "ON_DURING", 5)) - { - float timeout = 0; - - if (str_to_float(tokens[3], &timeout)) - { - unsigned char final_state; - - final_state = tux_movement_conststr_to_val(tokens[4]); - check_result(tux_wings_cmd_on_during(timeout, final_state)); - } - } - /* WINGS OPEN */ - if (match_token(tokens, nr_tokens, 2, "UP", 3)) - { - check_result(tux_wings_cmd_up()); - } - /* WINGS CLOSE */ - if (match_token(tokens, nr_tokens, 2, "DOWN", 3)) - { - check_result(tux_wings_cmd_down()); - } - /* WINGS OFF */ - if (match_token(tokens, nr_tokens, 2, "OFF", 3)) - { - check_result(tux_wings_cmd_off()); - } - /* WINGS SPEED */ - if (match_token(tokens, nr_tokens, 2, "SPEED", 4)) - { - unsigned char speed; - - if (str_to_uint8(tokens[3], &speed)) - { - check_result(tux_wings_cmd_speed(speed)); - } - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/** - * - */ -static TuxDrvError -tux_cmd_parser_handle_spinning_command(tokens_t tokens, int nr_tokens) -{ - /* SPINNING SPEED */ - if (match_token(tokens, nr_tokens, 2, "SPEED", 4)) - { - unsigned char speed; - - if (str_to_uint8(tokens[3], &speed)) - { - check_result(tux_spinning_cmd_speed(speed)); - } - } - /* SPINNING LEFT ON */ - if (match_token(tokens, nr_tokens, 2, "LEFT_ON", 4)) - { - unsigned char speed; - - if (str_to_uint8(tokens[3], &speed)) - { - check_result(tux_spinning_cmd_left_on(speed)); - } - } - /* SPINNING RIGHT ON */ - if (match_token(tokens, nr_tokens, 2, "RIGHT_ON", 4)) - { - unsigned char speed; - - if (str_to_uint8(tokens[3], &speed)) - { - check_result(tux_spinning_cmd_right_on(speed)); - } - } - /* SPINNING LEFT ON DURING */ - if (match_token(tokens, nr_tokens, 2, "LEFT_ON_DURING", 4)) - { - float timeout; - - if (str_to_float(tokens[3], &timeout)) - { - check_result(tux_spinning_cmd_left_on_during(timeout)); - } - } - /* SPINNING RIGHT ON DURING */ - if (match_token(tokens, nr_tokens, 2, "RIGHT_ON_DURING", 4)) - { - float timeout; - - if (str_to_float(tokens[3], &timeout)) - { - check_result(tux_spinning_cmd_right_on_during(timeout)); - } - } - /* SPINNING OFF */ - if (match_token(tokens, nr_tokens, 2, "OFF", 3)) - { - check_result(tux_spinning_cmd_off()); - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/** - * - */ -static TuxDrvError -tux_cmd_parser_handle_ir_command(tokens_t tokens, int nr_tokens) -{ - /* IR ON */ - if (match_token(tokens, nr_tokens, 2, "ON", 3)) - { - check_result(tux_user_inputs_cmd_ir_on()); - } - /* IR OFF */ - if (match_token(tokens, nr_tokens, 2, "OFF", 3)) - { - check_result(tux_user_inputs_cmd_ir_off()); - } - /* IR SEND */ - if (match_token(tokens, nr_tokens, 2, "SEND", 5)) - { - unsigned char address; - unsigned char command; - bool ret; - - ret = str_to_uint8(tokens[3], &address); - ret &= str_to_uint8(tokens[4], &command); - - if (ret) - { - check_result(tux_user_inputs_cmd_ir_send(address, command)); - } - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/** - * - */ -static TuxDrvError -tux_cmd_parser_handle_leds_command(tokens_t tokens, int nr_tokens) -{ - bool ret = true; - - /* LED SET */ - if (match_token(tokens, nr_tokens, 2, "SET", 8)) - { - leds_t leds; - float intensity; - unsigned char effect_type; - float effect_speed; - unsigned char effect_step; - - leds = conststr_to_ledval(tokens[3]); - ret = str_to_float(tokens[4], &intensity); - effect_type = conststr_to_effectval(tokens[5]); - ret &= str_to_float(tokens[6], &effect_speed); - ret &= str_to_uint8(tokens[7], &effect_step); - - if (ret) - { - check_result(tux_leds_cmd_set(leds, intensity, - effect_type, effect_speed, effect_step)); - } - } - /* LED ON */ - if (match_token(tokens, nr_tokens, 2, "ON", 5)) - { - leds_t leds; - float intensity; - - leds = conststr_to_ledval(tokens[3]); - ret = str_to_float(tokens[4], &intensity); - if (ret) - { - check_result(tux_leds_cmd_set(leds, intensity, NONE, 0, 0)); - } - } - /* LED OFF */ - if (match_token(tokens, nr_tokens, 2, "OFF", 4)) - { - leds_t leds; - - leds = conststr_to_ledval(tokens[3]); - check_result(tux_leds_cmd_set(leds, 0.0, NONE, 0, 0)); - } - /* LED PULSE */ - if (match_token(tokens, nr_tokens, 2, "PULSE", 11)) - { - leds_t leds; - float min_intensity; - float max_intensity; - unsigned char pulse_count; - float pulse_period; - unsigned char effect_type; - float effect_speed; - unsigned char effect_step; - - leds = conststr_to_ledval(tokens[3]); - ret = str_to_float(tokens[4], &min_intensity); - ret &= str_to_float(tokens[5], &max_intensity); - ret &= str_to_uint8(tokens[6], &pulse_count); - ret &= str_to_float(tokens[7], &pulse_period); - effect_type = conststr_to_effectval(tokens[8]); - ret &= str_to_float(tokens[9], &effect_speed); - ret &= str_to_uint8(tokens[10], &effect_step); - - if (ret) - { - check_result(tux_leds_cmd_pulse(leds, min_intensity, max_intensity, - pulse_count, pulse_period, - effect_type, effect_speed, effect_step)); - } - } - /* LED BLINK */ - if (match_token(tokens, nr_tokens, 2, "BLINK", 6)) - { - leds_t leds; - unsigned char pulse_count; - float pulse_period; - - leds = conststr_to_ledval(tokens[3]); - ret &= str_to_uint8(tokens[4], &pulse_count); - ret &= str_to_float(tokens[5], &pulse_period); - check_result(tux_leds_cmd_pulse(leds, 0.0, 1.0, - pulse_count, pulse_period, NONE, 0, 0)); - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/** - * - */ -static TuxDrvError -tux_cmd_parser_handle_play_command(tokens_t tokens, int nr_tokens) -{ - /* SOUND FLASH PLAY */ - if (match_token(tokens, nr_tokens, 2, "PLAY", 5)) - { - unsigned char track_num = 1; - float volume = 0; - bool ret; - - ret = str_to_uint8(tokens[3], &track_num); - ret &= str_to_float(tokens[4], &volume); - if (ret) - { - check_result(tux_sound_flash_cmd_play(track_num, volume)); - } - } - return E_TUXDRV_INVALIDCOMMAND; -} - - -/** - * - */ -static TuxDrvError -tux_cmd_parser_handle_audio_command(tokens_t tokens, int nr_tokens) -{ - /* CHANNEL GENERAL */ - if (match_token(tokens, nr_tokens, 2, "CHANNEL_GENERAL", 3)) - { - check_result(tux_audio_cmd_channel_general()); - } - /* CHANNEL TTS */ - if (match_token(tokens, nr_tokens, 2, "CHANNEL_TTS", 3)) - { - check_result(tux_audio_cmd_channel_tts()); - } - /* MUTE */ - if (match_token(tokens, nr_tokens, 2, "MUTE", 4)) - { - bool value; - - if (!str_to_bool(tokens[3], &value)) - { - return E_TUXDRV_INVALIDCOMMAND; - } - check_result(tux_audio_cmd_mute(value)); - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/** - * Parse a command. - */ -LIBLOCAL TuxDrvError -tux_cmd_parser_parse_command(const char *cmd_str) -{ - tokens_t tokens; - int nr_tokens; - - /* If the parser is not enabled then fail */ - if (!cmd_parser_enable) - { - return E_TUXDRV_PARSERISDISABLED; - } - - log_debug("Parse command : [%s]", cmd_str); - nr_tokens = tux_cmd_parser_get_tokens(cmd_str, &tokens, 32, ":,"); - - /* If no tokens in the command then fail */ - if (nr_tokens <= 0) - { - return E_TUXDRV_INVALIDCOMMAND; - } - - /* Command to tux */ - if (match_token(tokens, nr_tokens, 0, "TUX_CMD", 1)) - { - if (match_token(tokens, nr_tokens, 1, "EYES", 2)) - { - return tux_cmd_parser_handle_eyes_command(tokens, nr_tokens); - } - if (match_token(tokens, nr_tokens, 1, "MOUTH", 2)) - { - return tux_cmd_parser_handle_mouth_command(tokens, nr_tokens); - } - if (match_token(tokens, nr_tokens, 1, "WINGS", 2)) - { - return tux_cmd_parser_handle_wings_command(tokens, nr_tokens); - } - if (match_token(tokens, nr_tokens, 1, "SPINNING", 2)) - { - return tux_cmd_parser_handle_spinning_command(tokens, nr_tokens); - } - if (match_token(tokens, nr_tokens, 1, "IR", 2)) - { - return tux_cmd_parser_handle_ir_command(tokens, nr_tokens); - } - if (match_token(tokens, nr_tokens, 1, "LED", 2)) - { - return tux_cmd_parser_handle_leds_command(tokens, nr_tokens); - } - if (match_token(tokens, nr_tokens, 1, "SOUND_FLASH", 2)) - { - return tux_cmd_parser_handle_play_command(tokens, nr_tokens); - } - if (match_token(tokens, nr_tokens, 1, "AUDIO", 2)) - { - return tux_cmd_parser_handle_audio_command(tokens, nr_tokens); - } - } - /* Command raw to fux dongle or tux */ - if (match_token(tokens, nr_tokens, 0, "RAW_CMD", 6)) - { - check_result(tux_cmd_parser_parse_raw_cmd(tokens, nr_tokens)); - } - return E_TUXDRV_INVALIDCOMMAND; -} - -/* -WORK IN PROGRESS -idea is to parse a command when it is inserted and put it in the queue only if -it is a valid command -when executing the command does not need to be parsed any more but can be -executed directly - -todo: -add execute function -enter cmd in queue -retrieve cmd and execute it -remove old code (cmd param in struct, old parsing code etc) -test! -*/ - - -/** - * - */ -static TuxDrvError parse_tux_audio_command(tokens_t tokens, delay_cmd_t *cmd) { TuxDrvError ret = E_TUXDRV_INVALIDCOMMAND; @@ -1104,7 +451,7 @@ } else if (strcmp(tokens[2], "OPEN") == 0) { - cmd->sub_command = SET; + cmd->sub_command = OPEN; ret = E_TUXDRV_NOERROR; } return ret; @@ -1332,7 +679,7 @@ return E_TUXDRV_PARSERISDISABLED; } - log_debug("Parse command : [%s]", cmd_str); + log_debug("parse_command : [%s]", cmd_str); memset(&tokens, 0, sizeof(tokens_t)); nr_tokens = tux_cmd_parser_get_tokens(cmd_str, &tokens, 32, ":,"); @@ -1350,6 +697,303 @@ } /** + * + */ +static void +execute_audio_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case CHANNEL_GENERAL: + tux_audio_cmd_channel_general(); + break; + case CHANNEL_TTS: + tux_audio_cmd_channel_tts(); + break; + case MUTE: + tux_audio_cmd_mute(cmd->audio_parameters.muteflag); + break; + default: /* should not occur */ + log_error("execute invalid audio command"); + } +} + +/** + * + */ +static void +execute_eyes_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case ON: + tux_eyes_cmd_on( + cmd->eyes_parameters.nr_movements, + cmd->eyes_parameters.state); + break; + case ON_DURING: + tux_eyes_cmd_on_during( + cmd->eyes_parameters.duration, + cmd->eyes_parameters.state); + break; + case OPEN: + tux_eyes_cmd_open(); + break; + case CLOSE: + tux_eyes_cmd_close(); + break; + case OFF: + tux_eyes_cmd_off(); + break; + default: /* should not occur */ + log_error("execute invalid eyes command"); + } +} + +/** + * + */ +static void +execute_ir_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case ON: + tux_user_inputs_cmd_ir_on(); + break; + case OFF: + tux_user_inputs_cmd_ir_off(); + case SEND: + tux_user_inputs_cmd_ir_send( + cmd->ir_parameters.address, + cmd->ir_parameters.command); + break; + default: /* should not occur */ + log_error("execute invalid ir command"); + } +} + +/** + * + */ +static void +execute_led_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case ON: + tux_leds_cmd_set( + cmd->led_parameters.leds, + cmd->led_parameters.intensity, + NONE, + 0, + 0); + break; + case OFF: + tux_leds_cmd_set( + cmd->led_parameters.leds, + 0.0, + NONE, + 0, + 0); + break; + case PULSE: + tux_leds_cmd_pulse( + cmd->led_parameters.leds, + cmd->led_parameters.min_intensity, + cmd->led_parameters.max_intensity, + cmd->led_parameters.pulse_count, + cmd->led_parameters.pulse_period, + cmd->led_parameters.effect_type, + cmd->led_parameters.effect_speed, + cmd->led_parameters.effect_step); + break; + case BLINK: + tux_leds_cmd_pulse( + cmd->led_parameters.leds, + 0.0, + 1.0, + cmd->led_parameters.pulse_count, + cmd->led_parameters.pulse_period, + NONE, + 0, + 0); + break; + case SET: + tux_leds_cmd_set( + cmd->led_parameters.leds, + cmd->led_parameters.intensity, + cmd->led_parameters.effect_type, + cmd->led_parameters.effect_speed, + cmd->led_parameters.effect_step); + break; + default: /* should not occur */ + log_error("execute invalid led command"); + } +} + +/** + * + */ +static void +execute_mouth_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case ON: + tux_mouth_cmd_on( + cmd->mouth_parameters.nr_movements, + cmd->mouth_parameters.state); + break; + case ON_DURING: + tux_mouth_cmd_on_during( + cmd->mouth_parameters.duration, + cmd->mouth_parameters.state); + break; + case OPEN: + tux_mouth_cmd_open(); + break; + case CLOSE: + tux_mouth_cmd_close(); + break; + case OFF: + tux_mouth_cmd_off(); + break; + default: /* should not occur */ + log_error("execute invalid mouth command"); + } +} + +/** + * + */ +static void +execute_sound_flash_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case PLAY: + tux_sound_flash_cmd_play( + cmd->sound_flash_parameters.track, + cmd->sound_flash_parameters.volume); + break; + default: /* should not occur */ + log_error("execute invalid sound flash command"); + } +} + +/** + * + */ +static void +execute_spinning_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case LEFT_ON: + tux_spinning_cmd_left_on(cmd->spinning_parameters.nr_qturns); + break; + case RIGHT_ON: + tux_spinning_cmd_right_on(cmd->spinning_parameters.nr_qturns); + break; + case LEFT_ON_DURING: + tux_spinning_cmd_left_on_during(cmd->spinning_parameters.duration); + break; + case RIGHT_ON_DURING: + tux_spinning_cmd_right_on_during(cmd->spinning_parameters.duration); + break; + case OFF: + tux_spinning_cmd_off(); + break; + case SPEED: + tux_spinning_cmd_speed(cmd->spinning_parameters.speed); + break; + default: /* should not occur */ + log_error("execute invalid spinning command"); + } +} + +/** + * + */ +static void +execute_wings_command (delay_cmd_t *cmd) +{ + switch (cmd->sub_command) { + case ON: + tux_wings_cmd_on( + cmd->wings_parameters.nr_movements, + cmd->wings_parameters.state); + break; + case ON_DURING: + tux_wings_cmd_on_during( + cmd->wings_parameters.duration, + cmd->wings_parameters.state); + break; + case OFF: + tux_wings_cmd_off(); + break; + case UP: + tux_wings_cmd_up(); + break; + case DOWN: + tux_wings_cmd_down(); + break; + case SPEED: + tux_wings_cmd_speed(cmd->wings_parameters.speed); + break; + default: /* should not occur */ + log_error("execute invalid wings command"); + } +} + +/** + * + */ +static void +execute_raw_command (delay_cmd_t *cmd) +{ + tux_usb_send_raw(cmd->raw_parameters.raw); +} + +/** + * + */ +static void +execute_command (delay_cmd_t *cmd) +{ + if(cmd->command_group == TUX_CMD) + { + switch(cmd->command) { + case AUDIO: + execute_audio_command(cmd); + break; + case EYES: + execute_eyes_command(cmd); + break; + case IR: + execute_ir_command(cmd); + break; + case LED: + execute_led_command(cmd); + break; + case MOUTH: + execute_mouth_command(cmd); + break; + case SOUND_FLASH: + execute_sound_flash_command(cmd); + break; + case SPINNING: + execute_spinning_command(cmd); + break; + case WINGS: + execute_wings_command(cmd); + break; + } + } + else + { + if(cmd->command_group == RAW_CMD) + { + execute_raw_command(cmd); + } + } + cmd->command_group = NO_CMD; +} +/** * */ static TuxDrvError @@ -1361,12 +1005,18 @@ for (i = 0; i < NRCMDS; i++) { - if (!strcmp(stack->cmd_list[i].cmd, "")) + if (stack->cmd_list[i].command_group == NO_CMD) { - //parse_command(cmd_str, &(stack->cmd_list[i])); - strcpy(stack->cmd_list[i].cmd, cmd_str); - stack->cmd_list[i].timeout = delay + curtime; - ret = E_TUXDRV_NOERROR; + ret = parse_command(cmd_str, &(stack->cmd_list[i])); + if (ret == E_TUXDRV_NOERROR) + { + stack->cmd_list[i].timeout = delay + curtime; + } + else + { + /* might be overwritten */ + stack->cmd_list[i].command_group = NO_CMD; + } break; } } @@ -1419,9 +1069,9 @@ /* process all pending system commands */ for (i = 0; i < NRCMDS; i++) { - if (strcmp(sys_cmd_stack.cmd_list[i].cmd, "")) + if (sys_cmd_stack.cmd_list[i].command_group != NO_CMD) { - tux_cmd_parser_parse_command(sys_cmd_stack.cmd_list[i].cmd); + execute_command(&sys_cmd_stack.cmd_list[i]); /* no need to execute the following command as we are going to clear the complete stack after this for loop memset(&sys_cmd_stack.cmd_list[i], 0, sizeof(delay_cmd_t)); @@ -1454,26 +1104,26 @@ for (i = 0; i < NRCMDS; i++) { - if (strcmp(user_cmd_stack.cmd_list[i].cmd, "")) + if (user_cmd_stack.cmd_list[i].command_group != NO_CMD) { if (curtime >= user_cmd_stack.cmd_list[i].timeout) { - tux_cmd_parser_parse_command(user_cmd_stack.cmd_list[i].cmd); + execute_command(&user_cmd_stack.cmd_list[i]); /* next two commands are faster than a memset writing a null byte to the first char of cmd is sufficient to make it an empty string */ user_cmd_stack.cmd_list[i].timeout = 0; - user_cmd_stack.cmd_list[i].cmd[0] = 0; + user_cmd_stack.cmd_list[i].command_group = NO_CMD; } } - if (strcmp(sys_cmd_stack.cmd_list[i].cmd, "")) + if (sys_cmd_stack.cmd_list[i].command_group != NO_CMD) { if (curtime >= sys_cmd_stack.cmd_list[i].timeout) { - tux_cmd_parser_parse_command(sys_cmd_stack.cmd_list[i].cmd); + execute_command(&sys_cmd_stack.cmd_list[i]); sys_cmd_stack.cmd_list[i].timeout = 0; - sys_cmd_stack.cmd_list[i].cmd[0] = 0; + sys_cmd_stack.cmd_list[i].command_group = NO_CMD; } } } @@ -1588,3 +1238,25 @@ return ret; } + +/** + * Parse a command. + */ +LIBLOCAL TuxDrvError +tux_cmd_parser_parse_command(const char *cmd_str) +{ + TuxDrvError ret; + delay_cmd_t cmd; + + /* If the parser is not enabled then fail */ + if (!cmd_parser_enable) + { + return E_TUXDRV_PARSERISDISABLED; + } + ret = parse_command(cmd_str, &cmd); + if (ret == E_TUXDRV_NOERROR) + { + execute_command(&cmd); + } + return ret; +} Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-07 14:39:47 UTC (rev 1131) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-07 19:54:14 UTC (rev 1132) @@ -29,6 +29,7 @@ #define CMDSIZE 1024 typedef enum { + NO_CMD = 0, TUX_CMD, RAW_CMD } tux_command_group_t; @@ -151,7 +152,6 @@ wings_parameters_t wings_parameters; raw_parameters_t raw_parameters; }; - char cmd[CMDSIZE]; } delay_cmd_t; #endif /* _TUX_TYPES_H_ */ Modified: software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt 2008-05-07 14:39:47 UTC (rev 1131) +++ software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt 2008-05-07 19:54:14 UTC (rev 1132) @@ -2,7 +2,7 @@ -------------------- - Firmwares - - Global release package : [tuxdroid firmware release 0.4.0] + - Global release package : [Unofficial package] - CPU 1 CPU id : 0 CPU name : Tuxcore @@ -60,14 +60,14 @@ CPU name : FuxUSB Version major : 0 Version minor : 4 - Version update : 0 + Version update : 1 Revision : 0 Released : True Local modification : False Mixed revisions : False Author id : 0 Variation : 0 - Symbolic version : [FuxUSB_0.4.0] + Symbolic version : [FuxUSB_0.4.1] - Sound flash Number of sounds : 10 Last used block : 9 Modified: software_suite_v2/middleware/tuxdriver/trunk/test/main.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/test/main.c 2008-05-07 14:39:47 UTC (rev 1131) +++ software_suite_v2/middleware/tuxdriver/trunk/test/main.c 2008-05-07 19:54:14 UTC (rev 1132) @@ -213,7 +213,7 @@ argc -= optind; argv += optind; - TuxDrv_SetLogLevel(LOG_LEVEL_ERROR); + TuxDrv_SetLogLevel(LOG_LEVEL_DEBUG); TuxDrv_SetLogTarget(LOG_TARGET_SHELL); TuxDrv_SetStatusCallback(on_status_event); TuxDrv_SetEndCycleCallback(on_end_cycle); Modified: software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt 2008-05-07 14:39:47 UTC (rev 1131) +++ software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt 2008-05-07 19:54:14 UTC (rev 1132) @@ -3,5 +3,5 @@ 2.0:TUX_CMD:LED:SET:LED_BOTH,1.0,GRADIENT_DELTA,3.0,30 1.0:TUX_CMD:SOUND_FLASH:PLAY:1:100 1.0:TUX_CMD:WINGS:ON_DURING:2.0,DOWN -#3.0:TUX_CMD:SPINNING:LEFT_ON:5 -#5.0:TUX_CMD:SPINNING:RIGHT_ON:5 +3.0:TUX_CMD:SPINNING:LEFT_ON:1 +7.0:TUX_CMD:SPINNING:RIGHT_ON:5 |