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/c_ui.h | 352 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 352 insertions(+) create mode 100644 AT91SAM7S256/Source/c_ui.h (limited to 'AT91SAM7S256/Source/c_ui.h') diff --git a/AT91SAM7S256/Source/c_ui.h b/AT91SAM7S256/Source/c_ui.h new file mode 100644 index 0000000..07a4237 --- /dev/null +++ b/AT91SAM7S256/Source/c_ui.h @@ -0,0 +1,352 @@ +// +// Programmer +// +// Date init 14.12.2004 +// +// Reviser $Author:: Dktochpe $ +// +// Revision date $Date:: 3-02-06 12:50 $ +// +// Filename $Workfile:: c_ui.h $ +// +// Version $Revision:: 75 $ +// +// Archive $Archive:: /LMS2006/Sys01/Main/Firmware/Source/c_ui.h $ +// +// Platform C +// + +#ifndef C_UI +#define C_UI + +#define NO_OF_FEEDBACK_CHARS 12 // Chars left when bitmap also showed +#define SIZE_OF_CURSOR 16 // Bitmap size of cursor (header + 8x8 pixels) +#define SIZE_OF_PORTBITMAP 11 // Bitmap size of port no (header + 3x8 pixels) +#define NO_OF_STATUSICONS 4 // Status icons + +#define NO_OF_INTROBITMAPS 16 // Intro bitmaps +#define INTRO_START_TIME 1000 // Intro startup time [mS] +#define INTRO_SHIFT_TIME 100 // Intro inter bitmap time [mS] +#define INTRO_STOP_TIME 1000 // Intro stop time [mS] +#define INTRO_LOWBATT_TIME 2000 // Low battery show time at power up [mS] + +#define MAX_VOLUME 4 // Max volume in UI [cnt] + +#define BATTERY_COUNT_TO_MV 13.848 // Battery count to mV factor [mV/cnt] +#define LOW_BATT_THRESHOLD 6 // Low batt conunts before warning + +#define BUTTON_DELAY_TIME 800 // Delay before first repeat [mS] +#define BUTTON_REPEAT_TIME 200 // Repeat time [mS] + +#define RUN_BITMAP_CHANGE_TIME 125 // Running bimap update time [mS] +#define RUN_STATUS_CHANGE_TIME 167 // Running status update time [mS] + +#define DISPLAY_SHOW_ERROR_TIME 2500 // Error string show time [mS] +#define DISPLAY_SHOW_TIME 1500 // Min. response display time [mS] +#define DISPLAY_VIEW_UPDATE 250 // Display update time [mS] +#define MIN_DISPLAY_UPDATE_TIME 50 // OBP min graphics update time [mS] +#define MIN_SENSOR_READ_TIME 25 // Time between sensor reads [mS] + +#define ARM_WAIT_FOR_POWER_OFF 250 // Time for off command to execute [mS] + +// Menu special flags + +#define MENU_SKIP_THIS_MOTHER_ID 0x00000001L // Used to seek next common menu (i0000000) + // Free +#define MENU_ENTER_ACT_AS_EXIT 0x00000004L // Enter button acts as exit button +#define MENU_BACK_TWICE 0x00000008L // Exit twice on exit button +#define MENU_EXIT_ACT_AS_ENTER 0x00000010L // Exit button acts as enter button +#define MENU_LEAVE_BACKGROUND 0x00000020L // Don't erase background at next menu +#define MENU_EXIT_CALLS_WITH_FF 0x00000040L // Exit button calls function with MENU_EXIT +#define MENU_EXIT_LEAVES_MENUFILE 0x00000080L // Exit leaves menu file +#define MENU_INIT_CALLS_WITH_0 0x00000100L // Menu init calls with MENU_INIT +#define MENU_LEFT_RIGHT_AS_CALL 0x00000200L // Left calls with MENU_LEFT and right with MENU_RIGHT +#define MENU_ENTER_ONLY_CALLS 0x00000400L // Enter calls only it does not change menues +#define MENU_EXIT_ONLY_CALLS 0x00000800L // Exit calls only it does not change menues +#define MENU_AUTO_PRESS_ENTER 0x00001000L // Enter button is pressed automaticly +#define MENU_ENTER_LEAVES_MENUFILE 0x00002000L // Enter leaves menufile +#define MENU_INIT_CALLS 0x00004000L // Init calls instead of enter +#define MENU_ACCEPT_INCOMMING_REQUEST 0x00008000L // Accept incomming BT connection request +#define MENU_BACK_THREE_TIMES 0x00010000L // Exit three times on exit button +#define MENU_EXIT_DISABLE 0x00020000L // Disable exit button +#define MENU_EXIT_LOAD_POINTER 0x00040000L // Load item index on exit (0i000000) +#define MENU_EXIT_CALLS 0x00080000L // Exit calls as enter +#define MENU_INIT_CALLS_WITH_1 0x00100000L // Menu init calls with MENU_INIT +#define MENU_EXIT_LOAD_MENU 0x00200000L // Exit loads next menu +#define MENU_ONLY_BT_ON 0x00400000L // Only valid when bluecore is on +#define MENU_ONLY_DATALOG_ENABLED 0x00800000L // Only valid when datalog is enabled + +// Menu function call parameter + +#define MENU_SENSOR_EMPTY 0x01 // Empty +#define MENU_SENSOR_SOUND_DB 0x02 // Sound sensor dB +#define MENU_SENSOR_SOUND_DBA 0x03 // Sound sensor dBA +#define MENU_SENSOR_LIGHT 0x04 // Light sensor with flood light +#define MENU_SENSOR_LIGHT_AMB 0x05 // Light sensor without flood light +#define MENU_SENSOR_LIGHT_OLD 0x06 // Light sensor old with flood light +#define MENU_SENSOR_TOUCH 0x07 // Touch sensor +#define MENU_SENSOR_MOTOR_DEG 0x08 // Motor sensor degrees +#define MENU_SENSOR_MOTOR_ROT 0x09 // Motor sensor rotations +#define MENU_SENSOR_ROTATION 0x0A // Rotation sensor ticks +#define MENU_SENSOR_ULTRASONIC_IN 0x0B // Ultrasonic sensor inch +#define MENU_SENSOR_ULTRASONIC_CM 0x0C // Ultrasonic sensor cm +#define MENU_SENSOR_TEMP_C 0x0D // Temp sensor celcius +#define MENU_SENSOR_TEMP_F 0x0E // Temp sensor fahrenheit +#define MENU_SENSOR_INVALID 0x0F // Invalid + +#define MENU_PORT_EMPTY 0x11 // NA +#define MENU_PORT_1 0x12 // Port 1 +#define MENU_PORT_2 0x13 // Port 2 +#define MENU_PORT_3 0x14 // Port 3 +#define MENU_PORT_4 0x15 // Port 4 +#define MENU_PORT_A 0x16 // Port A +#define MENU_PORT_B 0x17 // Port B +#define MENU_PORT_C 0x18 // Port C +#define MENU_PORT_INVALID 0x19 // Invalid + +#define MENU_ACTION_EMPTY 0x21 // Empty +#define MENU_ACTION_FORWARD_1 0x22 // Forward until +#define MENU_ACTION_FORWARD_2 0x23 // Forward 5 +#define MENU_ACTION_BACK_LEFT_2 0x24 // Back left 2 +#define MENU_ACTION_TURN_LEFT_1 0x25 // Turn left until +#define MENU_ACTION_TURN_LEFT_2 0x26 // Turn left 2 +#define MENU_ACTION_BACK_RIGHT_1 0x27 // Back right until +#define MENU_ACTION_TURN_RIGHT_1 0x28 // Turn right until +#define MENU_ACTION_TURN_RIGHT_2 0x29 // Turn right 2 +#define MENU_ACTION_BACK_LEFT_1 0x2A // Back left until +#define MENU_ACTION_TONE_1 0x2B // Tone 1 +#define MENU_ACTION_TONE_2 0x2C // Tone 2 +#define MENU_ACTION_BACKWARD_1 0x2D // Backward until +#define MENU_ACTION_BACKWARD_2 0x2E // Backward 5 +#define MENU_ACTION_BACK_RIGHT_2 0x2F // Back right 2 +#define MENU_ACTION_INVALID 0x30 // Invalid + +#define MENU_WAIT_EMPTY 0x41 // Empty +#define MENU_WAIT_LIGHT 0x42 // Light +#define MENU_WAIT_SEEK_OBJ 0x43 // Seek obj. +#define MENU_WAIT_SOUND 0x44 // Sound +#define MENU_WAIT_TOUCH 0x45 // Touch +#define MENU_WAIT_1 0x46 // Wait 2 +#define MENU_WAIT_2 0x47 // Wait 5 +#define MENU_WAIT_3 0x48 // Wait 10 +#define MENU_WAIT_DARK 0x49 // Dark +#define MENU_WAIT_INVALID 0x4A // Invalid + +#define MENU_INIT 0x00 // Init +#define MENU_INIT_ALTERNATIVE 0x01 // Init alternative +#define MENU_DRAW 0xE9 // Draw +#define MENU_OFF 0xEA // Off +#define MENU_ON 0xEB // On +#define MENU_OPEN_STREAM 0xEC // Open stream +#define MENU_OVERWRITE 0xED // Overwrite file +#define MENU_CALCULATE 0xEE // Calculate +#define MENU_ENTER 0xEF // Enter +#define MENU_DISCONNECT 0xF0 // Disconnect BT +#define MENU_DELETE 0xF1 // Delete +#define MENU_SELECT 0xF2 // Select +#define MENU_RUN_SILENT 0xF3 // Run without graphics +#define MENU_TOGGLE 0xF4 // Toggle +#define MENU_CONNECT 0xF5 // Connect BT +#define MENU_UPDATE 0xF6 // Update +#define MENU_TEXT 0xF7 // Text +#define MENU_RUN 0xF8 // Run +#define MENU_SEND 0xF9 // Send +#define MENU_SAVE 0xFA // Save +#define MENU_STOP 0xFB // Stop +#define MENU_LOOP 0xFC // Loop +#define MENU_LEFT 0xFD // Left +#define MENU_RIGHT 0xFE // Right +#define MENU_EXIT 0xFF // Exit + +#define MENULEVELS 10 // Max no of levels in one file (8 + 2 virtual) +#define MENUFILELEVELS 3 // Max deept in menu file pool + +typedef struct // VarsUi.MenuFiles[VarsUi.MenuFileLevel].MenuLevels[VarsUi.MenuLevel]. +{ + ULONG Id; // Menu item id + UBYTE *IconText; // Menu item icon text pointer + ULONG SpecialFlags; // Menu item special behaivor + UBYTE IconImageNo; // Menu item icon image no + UBYTE FunctionNo; // Menu item function call no (0 = none) + UBYTE Parameter; // Menu item function call parameter + UBYTE NextFileNo; // Menu item next menu file no (0 = none) + UBYTE NextMenuNo; // Menu item next menu no (0 = none) + + UBYTE ItemIndex; // Menu item index on level + UBYTE Items; // Menu items on level +} +MENULEVEL; + +typedef struct +{ + MENULEVEL MenuLevels[MENULEVELS]; // See above + UBYTE FileId; // VarsUi.MenuFiles[VarsUi.MenuFileLevel].FileId + UBYTE MenuLevel; // VarsUi.MenuFiles[VarsUi.MenuFileLevel].MenuLevel +} +MENUFILE; + +typedef struct +{ + UBYTE StatusText[STATUSTEXT_SIZE + 1]; // RCX name + UBYTE Initialized; // Ui init done + UWORD SleepTimer; // Sleep timer + + // Menu system + MENUFILE MenuFiles[MENUFILELEVELS]; // Menu file array + MENUFILE *pMenuFile; // Actual menu file pointer + MENULEVEL *pMenuLevel; // Actual menu item on level, pointer + MENUITEM *pMenuItem; // Actual menu item in menu flash file + UBYTE MenuFileLevel; // Actual menu file level + UBYTE Function; // Running function (0 = none) + UBYTE Parameter; // Parameter for running function + UBYTE SecondTime; // Second time flag + UBYTE EnterOnlyCalls; // Enter button only calls + UBYTE ExitOnlyCalls; // Exit button only calls + UWORD ButtonTimer; // Button repeat timer + UWORD ButtonTime; // Button repeat time + UBYTE ButtonOld; // Button old state + + // Update status + UWORD UpdateCounter; // Update counter + UBYTE Running; // Running pointer + UBYTE BatteryToggle; // Battery flash toggle flag + UBYTE NewStatusIcons[NO_OF_STATUSICONS]; // New status icons (used to detect changes) + + // Low battery voltage + UBYTE *LowBattSavedBitmap; // Low battery overwritten bitmap placeholder + UBYTE LowBatt; // Low battery volatge flag + UBYTE LowBattHasOccured; // Low battery voltage has occured + UBYTE LowBattSavedState; // Low battery current state placeholder + + // General used variables + UBYTE *MenuIconTextSave; // Menu icon text save + + UBYTE *pTmp; // General UBYTE pointer + ULONG TmpLength; // General filelength (used in filelist) + SWORD TmpHandle; // General filehandle (used in filelist) + + SWORD Timer; // General tmp purpose timer + SWORD ReadoutTimer; // General read out timer + UBYTE Tmp; // General UBYTE + UBYTE FileType; // General file type + UBYTE State; // General tmp purpose state + UBYTE Pointer; // General tmp purpose pointer + UBYTE Counter; // General tmp purpose counter + UBYTE Cursor; // General cursor + UBYTE SelectedSensor; // General used for selected sensor + UBYTE SelectedPort; // General used for selected port + UBYTE NextState; + + UBYTE SelectedFilename[FILENAME_LENGTH + 1]; // Selected file name + UBYTE FilenameBuffer[FILENAME_LENGTH + 1]; // General filename buffer + UBYTE SearchFilenameBuffer[FILENAME_LENGTH + 1];// General filename buffer + UBYTE DisplayBuffer[DISPLAYLINE_LENGTH + 1]; // General purpose display buffer + + UBYTE PortBitmapLeft[SIZE_OF_PORTBITMAP]; // Port no bitmap for left icon + UBYTE PortBitmapCenter[SIZE_OF_PORTBITMAP]; // Port no bitmap for center icon + UBYTE PortBitmapRight[SIZE_OF_PORTBITMAP]; // Port no bitmap for right icon + + // Find no of files and find name for file no + ULONG FNOFLength; // Length + SWORD FNOFHandle; // Handle + UBYTE FNOFState; // State + UBYTE FNOFSearchBuffer[FILENAME_LENGTH + 1]; // Search buffer + UBYTE FNOFNameBuffer[FILENAME_LENGTH + 1]; // File name buffer + UBYTE FNOFFileNo; // File no + + // File list + UBYTE FileCenter; // File center + UBYTE FileLeft; // File left + UBYTE FileRight; // File right + UBYTE NoOfFiles; // No of files + + // On brick programming menu + UBYTE ProgramSteps[ON_BRICK_PROGRAMSTEPS]; // On brick programming steps + UBYTE ProgramStepPointer; // On brick programming step pointer + UBYTE CursorTmp[SIZE_OF_CURSOR]; // On brick programming cursor + UBYTE FileHeader[FILEHEADER_LENGTH]; // File header for programs + UBYTE *FeedBackText; // Program end text + UWORD OBPTimer; // Graphic update timer + + // BT search menu + UBYTE NoOfDevices; // BT search no of devices found + UBYTE NoOfNames; // BT search no of names found + UBYTE SelectedDevice; // BT selected device + UBYTE SelectedSlot; // BT selected slot + + // BT device list menu + UBYTE DevicesKnown; // BT device known flag + UBYTE Devices; // BT devices + UBYTE DeviceLeft; // BT device left + UBYTE DeviceCenter; // BT device center + UBYTE DeviceRight; // BT device right + UBYTE DeviceType; // BT device type + + // BT connect Menu + UBYTE Slots; // BT connect no of slots + UBYTE SlotLeft; // BT connect + UBYTE SlotCenter; // BT connect + UBYTE SlotRight; // BT connect + + // Get user string + UBYTE GUSTmp; // Seperat tmp for "Get user string" + UBYTE GUSState; // Seperat state for "Get user string" + UBYTE GUSNoname; // No user entry + UBYTE UserString[DISPLAYLINE_LENGTH + 1]; // User string + UBYTE DisplayText[DISPLAYLINE_LENGTH + 1]; // Display buffer + SBYTE FigurePointer; // Figure cursor + UBYTE GUSCursor; // User string cursor + + // Connect request + ULONG CRPasskey; // Passkey to fake wrong pin code + UBYTE CRState; // Seperate state for "Connect request" + UBYTE CRTmp; // Seperate tmp for "Connect request" + + // Run files + UBYTE *RunIconSave; // Menu center icon save + UWORD RunTimer; // Bitmap change timer + UBYTE RunBitmapPointer; // Bitmap pointer + + // Delete files + UBYTE SelectedType; // Type of selected files for delete + + // View + SLONG ViewSampleValue; // Latch for sensor values + UBYTE ViewSampleValid; // Latch for sensor valid + + // NV storage + ULONG NVTmpLength; // Non volatile filelength + SWORD NVTmpHandle; // Non volatile filehandle + UBYTE NVFilename[FILENAME_LENGTH + 1]; // Non volatile file name + UBYTE NVData; // Non volatile data + + // Feedback + UBYTE *FBText; // Seperate text pointer for feedback + UWORD FBTimer; // Seperate timer for feedback + UBYTE FBState; // Seperate state for feedback + UBYTE FBPointer; // Seperate pointer for feedback + + // BT command + UBYTE BTIndex; // List index + UBYTE BTTmpIndex; // Tmp list index + UBYTE BTCommand; // Last lached BT command + UBYTE BTPar1; // Last lached BT command parameter 1 + UBYTE BTPar2; // Last lached BT command parameter 2 + UWORD BTResult; // Last lached BT command result + + // Error display + UBYTE ErrorTimer; // Error show timer + UBYTE ErrorFunction; // Error latched function + UBYTE ErrorParameter; // Error latched parameter + UBYTE ErrorState; // Error latched state + UBYTE ErrorString[DISPLAYLINE_LENGTH + 1]; // Error string +}VARSUI; + + +void cUiInit(void* pHeader); // Init controller +void cUiCtrl(void); // Run controller +void cUiExit(void); // Exit controller + +extern const HEADER cUi; + +#endif -- cgit v1.2.3