From ba78bd9ba834260d035a9830726afc34fdad2a15 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 18 Oct 2009 23:32:54 +0200 Subject: import firmware from LEGO v1.05 --- AT91SAM7S256/Source/modules.h | 343 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 343 insertions(+) create mode 100644 AT91SAM7S256/Source/modules.h (limited to 'AT91SAM7S256/Source/modules.h') diff --git a/AT91SAM7S256/Source/modules.h b/AT91SAM7S256/Source/modules.h new file mode 100644 index 0000000..6060800 --- /dev/null +++ b/AT91SAM7S256/Source/modules.h @@ -0,0 +1,343 @@ +// +// Programmer +// +// Date init 14.12.2004 +// +// Reviser $Author:: Dkflebun $ +// +// Revision date $Date:: 5-02-07 13:36 $ +// +// Filename $Workfile:: modules.h $ +// +// Version $Revision:: 49 $ +// +// Archive $Archive:: /LMS2006/Sys01/Main/Firmware/Source/modules.h $ +// +// Platform C +// + +#ifndef MODULE_HEADER +#define MODULE_HEADER + +#define FILENAME_LENGTH 19 // zero termination not included +#define FILEHEADER_LENGTH 8 // all simple file headers +#define DISPLAYLINE_LENGTH 16 // zero termination not included +#define ON_BRICK_PROGRAMSTEPS 5 // no of on brick program steps +#define STATUSTEXT_SIZE 8 // zero termination not included + +#define TXT_SOUND_EXT "rso" // Sound filename extension +#define TXT_LMS_EXT "rxe" // Mindstorms program filename extension +#define TXT_NXT_EXT "rpg" // Program filename extension +#define TXT_TRYME_EXT "rtm" // Try me program filename extension +#define TXT_DATA_EXT "rdt" // Datalog filename extension +#define TXT_MENU_EXT "rms" // Menu system filename extension (hidden) +#define TXT_SYS_EXT "sys" // System filename extension (hidden) +#define TXT_TMP_EXT "tmp" // Temporary filename extension (hidden) + + +/* Error codes from then Loader */ +enum +{ + SUCCESS = 0x0000, + INPROGRESS = 0x0001, + REQPIN = 0x0002, + NOMOREHANDLES = 0x8100, + NOSPACE = 0x8200, + NOMOREFILES = 0x8300, + EOFEXSPECTED = 0x8400, + ENDOFFILE = 0x8500, + NOTLINEARFILE = 0x8600, + FILENOTFOUND = 0x8700, + HANDLEALREADYCLOSED = 0x8800, + NOLINEARSPACE = 0x8900, + UNDEFINEDERROR = 0x8A00, + FILEISBUSY = 0x8B00, + NOWRITEBUFFERS = 0x8C00, + APPENDNOTPOSSIBLE = 0x8D00, + FILEISFULL = 0x8E00, + FILEEXISTS = 0x8F00, + MODULENOTFOUND = 0x9000, + OUTOFBOUNDERY = 0x9100, + ILLEGALFILENAME = 0x9200, + ILLEGALHANDLE = 0x9300, + BTBUSY = 0x9400, + BTCONNECTFAIL = 0x9500, + BTTIMEOUT = 0x9600, + FILETX_TIMEOUT = 0x9700, + FILETX_DSTEXISTS = 0x9800, + FILETX_SRCMISSING = 0x9900, + FILETX_STREAMERROR = 0x9A00, + FILETX_CLOSEERROR = 0x9B00 +}; + + +/* interface between comm and BC4 */ +enum +{ + MSG_BEGIN_INQUIRY, + MSG_CANCEL_INQUIRY, + MSG_CONNECT, + MSG_OPEN_PORT, + MSG_LOOKUP_NAME, + MSG_ADD_DEVICE, + MSG_REMOVE_DEVICE, + MSG_DUMP_LIST, + MSG_CLOSE_CONNECTION, + MSG_ACCEPT_CONNECTION, + MSG_PIN_CODE, + MSG_OPEN_STREAM, + MSG_START_HEART, + MSG_HEARTBEAT, + MSG_INQUIRY_RUNNING, + MSG_INQUIRY_RESULT, + MSG_INQUIRY_STOPPED, + MSG_LOOKUP_NAME_RESULT, + MSG_LOOKUP_NAME_FAILURE, + MSG_CONNECT_RESULT, + MSG_RESET_INDICATION, + MSG_REQUEST_PIN_CODE, + MSG_REQUEST_CONNECTION, + MSG_LIST_RESULT, + MSG_LIST_ITEM, + MSG_LIST_DUMP_STOPPED, + MSG_CLOSE_CONNECTION_RESULT, + MSG_PORT_OPEN_RESULT, + MSG_SET_DISCOVERABLE, + MSG_CLOSE_PORT, + MSG_CLOSE_PORT_RESULT, + MSG_PIN_CODE_ACK, + MSG_DISCOVERABLE_ACK, + MSG_SET_FRIENDLY_NAME, + MSG_SET_FRIENDLY_NAME_ACK, + MSG_GET_LINK_QUALITY, + MSG_LINK_QUALITY_RESULT, + MSG_SET_FACTORY_SETTINGS, + MSG_SET_FACTORY_SETTINGS_ACK, + MSG_GET_LOCAL_ADDR, + MSG_GET_LOCAL_ADDR_RESULT, + MSG_GET_FRIENDLY_NAME, + MSG_GET_DISCOVERABLE, + MSG_GET_PORT_OPEN, + MSG_GET_FRIENDLY_NAME_RESULT, + MSG_GET_DISCOVERABLE_RESULT, + MSG_GET_PORT_OPEN_RESULT, + MSG_GET_VERSION, + MSG_GET_VERSION_RESULT, + MSG_GET_BRICK_STATUSBYTE_RESULT, + MSG_SET_BRICK_STATUSBYTE_RESULT, + MSG_GET_BRICK_STATUSBYTE, + MSG_SET_BRICK_STATUSBYTE +}; + +#define SIZE_OF_BT_NAME 16 +#define SIZE_OF_BRICK_NAME 8 +#define SIZE_OF_CLASS_OF_DEVICE 4 +#define SIZE_OF_BT_PINCODE 16 +#define SIZE_OF_BDADDR 7 + + +enum +{ + ENTRY_COMM, + ENTRY_INPUT, + ENTRY_BUTTON, + ENTRY_DISPLAY, + ENTRY_LOADER, + ENTRY_LOWSPEED, + ENTRY_OUTPUT, + ENTRY_SOUND, + ENTRY_IOCTRL, + ENTRY_CMD, + ENTRY_UI, + ENTRY_FREE2, + ENTRY_FREE3, + ENTRY_FREE4, + ENTRY_FREE5 +}; + +typedef struct +{ + ULONG ModuleID; + UBYTE ModuleName[FILENAME_LENGTH + 1]; + void (*cInit)(void* pHeader); + void (*cCtrl)(void); + void (*cExit)(void); + void *pIOMap; + void *pVars; + UWORD IOMapSize; + UWORD VarsSize; + UWORD ModuleSize; +}HEADER; + +enum +{ + FILEFORMAT_SOUND = 0x0100, // rso + FILEFORMAT_SOUND_COMPRESSED = 0x0101, // rso + FILEFORMAT_BITMAP = 0x0200, + FILEFORMAT_FONT = 0x0300, + FILEFORMAT_ICON = 0x0400, + FILEFORMAT_TEXT = 0x0500, + FILEFORMAT_MELODY = 0x0600, + FILEFORMAT_MENU = 0x0700, // rms + FILEFORMAT_PROGRAM = 0x0800, // rpg + FILEFORMAT_DATALOG = 0x0900 // rdt +}; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DateBytesMsb; + UBYTE DataBytesLsb; + UBYTE SampleRateMsb; + UBYTE SampleRateLsb; + UBYTE PlayModeMsb; + UBYTE PlayModeLsb; + UBYTE Data[]; +} +SOUND; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DateBytesMsb; + UBYTE DataBytesLsb; + UBYTE StartX; + UBYTE StartY; + UBYTE PixelsX; + UBYTE PixelsY; + UBYTE Data[]; +} +BMPMAP; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DataBytesMsb; + UBYTE DataBytesLsb; + UBYTE ItemsX; + UBYTE ItemsY; + UBYTE ItemPixelsX; + UBYTE ItemPixelsY; + UBYTE Data[]; +} +FONT; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DataBytesMsb; + UBYTE DataBytesLsb; + UBYTE ItemsX; + UBYTE ItemsY; + UBYTE ItemPixelsX; + UBYTE ItemPixelsY; + UBYTE Data[]; +} +ICON; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DataBytesMsb; + UBYTE DataBytesLsb; + UBYTE ItemsX; + UBYTE ItemsY; + UBYTE ItemCharsX; + UBYTE ItemCharsY; + UBYTE Data[]; +} +TXT; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DateBytesMsb; + UBYTE DataBytesLsb; + UBYTE TonesMsb; + UBYTE TonesLsb; + UBYTE PlayModeMsb; + UBYTE PlayModeLsb; + UBYTE Data[]; // Data[0] = FreqMsb, Data[1] = FreqLsb, Data[2] = DurationMsb, Data[3] = DurationLsb .... +} +MELODY; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DataBytesMsb; + UBYTE DataBytesLsb; + UBYTE Steps; + UBYTE NotUsed1; + UBYTE NotUsed2; + UBYTE NotUsed3; + UBYTE Data[]; +} +PROGRAM; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DataBytesMsb; + UBYTE DataBytesLsb; + UBYTE TotalTime3; + UBYTE TotalTime2; + UBYTE TotalTime1; + UBYTE TotalTime0; + UBYTE Data[]; +} +DATALOG; + +#define DATALOG_FILE_LENGTH 64000L// Max datalog file size +#define DATALOG_HEADER_LENGTH 9 // Datalog sensor header length [Bytes] +#define DATALOG_DATA_LENGTH 5 // Datalog sensor data length [Bytes] + +#define ICON_TEXTLNG 15 // 15 characters +#define ICON_IMAGESIZE 72 // 24 x 24 pixels +#define MAX_MENUITEMS 256 + +typedef struct +{ + UBYTE ItemId67; // Menu item id + UBYTE ItemId45; // Menu item id + UBYTE ItemId23; // Menu item id + UBYTE ItemId01; // Menu item id + UBYTE SpecialMask3; // Menu item special mask (TBD) + UBYTE SpecialMask2; // Menu item special mask (TBD) + UBYTE SpecialMask1; // Menu item special mask (TBD) + UBYTE SpecialMask0; // Menu item special mask (TBD) + UBYTE FunctionIndex; // Menu item enter function call index + UBYTE FunctionParameter; // Menu item enter function parameter + UBYTE FileLoadNo; // Menu item enter menu file load no + UBYTE NextMenu; // Menu item enter next level menu no + UBYTE IconText[ICON_TEXTLNG + 1]; // Menu item icon text string + UBYTE IconImageNo; // Menu item icon image number +}MENUITEM; + +typedef struct +{ + UBYTE FormatMsb; + UBYTE FormatLsb; + UBYTE DataBytesMsb; + UBYTE DataBytesLsb; + UBYTE ItemSize; + UBYTE Items; + UBYTE ItemPixelsX; + UBYTE ItemPixelsY; + MENUITEM Data[MAX_MENUITEMS]; +} +MENU; + +typedef UBYTE (*FUNCTION)(UBYTE); // Menu function type + +#endif + + + -- cgit v1.2.3