LEGO Mindstorms EV3 |
Following defines sets the system configuration and limitations.
Defines with preceding "vm" is visible for the byte code assembler
*/ // HARDWARE #define vmOUTPUTS 4 //!< Number of output ports in the system #define vmINPUTS 4 //!< Number of input ports in the system #define vmBUTTONS 6 //!< Number of buttons in the system #define vmLEDS 4 //!< Number of LEDs in the system #define vmLCD_WIDTH 178 //!< LCD horizontal pixels #define vmLCD_HEIGHT 128 //!< LCD vertical pixels #define vmTOPLINE_HEIGHT 10 //!< Top line vertical pixels #define vmLCD_STORE_LEVELS 3 //!< Store levels #define vmDEFAULT_VOLUME 100 #define vmDEFAULT_SLEEPMINUTES 30 // SOFTWARE #define vmFG_COLOR 1 //!< Forground color #define vmBG_COLOR 0 //!< Background color #define vmCHAIN_DEPT 4 //!< Number of bricks in the USB daisy chain (master + slaves) #define FILEPERMISSIONS (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) #define DIRPERMISSIONS (S_IRWXU | S_IRWXG | S_IRWXO) #define SYSPERMISSIONS (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) #define vmPATHSIZE 84 //!< Max path size excluding trailing forward slash including zero termination #define vmNAMESIZE 32 //!< Max name size including zero termination (must be divideable by 4) #define vmEXTSIZE 5 //!< Max extension size including dot and zero termination #define vmFILENAMESIZE 120 //!< Max filename size including path, name, extension and termination (must be divideable by 4) #define vmMACSIZE 18 //!< Max WIFI MAC size including zero termination #define vmIPSIZE 16 //!< Max WIFI IP size including zero termination #define vmBTADRSIZE 13 //!< Max bluetooth address size including zero termination #define vmERR_STRING_SIZE 32 // Inclusive zero termination #define vmEVENT_BT_PIN 1 #define vmEVENT_BT_REQ_CONF 2 #define vmMAX_VALID_TYPE 101 //!< Highest valid device type // FOLDERS #define vmMEMORY_FOLDER "/mnt/ramdisk" //!< Folder for non volatile user programs/data #define vmPROGRAM_FOLDER "../prjs/BrkProg_SAVE" //!< Folder for On Brick Programming programs #define vmDATALOG_FOLDER "../prjs/BrkDL_SAVE" //!< Folder for On Brick Data log files #define vmSDCARD_FOLDER "../prjs/SD_Card" //!< Folder for SD card mount #define vmUSBSTICK_FOLDER "../prjs/USB_Stick" //!< Folder for USB stick mount #define vmPRJS_DIR "../prjs" //!< Project folder #define vmAPPS_DIR "../apps" //!< Apps folder #define vmTOOLS_DIR "../tools" //!< Tools folder #define vmTMP_DIR "../tmp" //!< Temporary folder #define vmSETTINGS_DIR "../sys/settings" //!< Folder for non volatile settings #define vmDIR_DEEPT 127 //!< Max directory items allocated including "." and ".." // FILES USED IN APPLICATION #define vmLASTRUN_FILE_NAME "lastrun" //!< Last run filename #define vmCALDATA_FILE_NAME "caldata" //!< Calibration data filename // FILES USED IN APPS #define vmSLEEP_FILE_NAME "Sleep" //!< File used in "Sleep" app to save status #define vmVOLUME_FILE_NAME "Volume" //!< File used in "Volume" app to save status #define vmWIFI_FILE_NAME "WiFi" //!< File used in "WiFi" app to save status #define vmBLUETOOTH_FILE_NAME "Bluetooth" //!< File used in "Bluetooth" app to save status // EXTENSIONS #define vmEXT_SOUND ".rsf" //!< Robot Sound File #define vmEXT_GRAPHICS ".rgf" //!< Robot Graphics File #define vmEXT_BYTECODE ".rbf" //!< Robot Byte code File #define vmEXT_TEXT ".rtf" //!< Robot Text File #define vmEXT_DATALOG ".rdf" //!< Robot Datalog File #define vmEXT_PROGRAM ".rpf" //!< Robot Program File #define vmEXT_CONFIG ".rcf" //!< Robot Configuration File #define vmEXT_ARCHIVE ".raf" //!< Robot Archive File // NAME LENGTHs #define vmBRICKNAMESIZE 120 //!< Brick name maximal size (including zero termination) #define vmBTPASSKEYSIZE 7 //!< Bluetooth pass key size (including zero termination) #define vmWIFIPASSKEYSIZE 33 //!< WiFi pass key size (including zero termination) // VALID CHARACTERS #define vmCHARSET_NAME 0x01 //!< Character set allowed in brick name and raw filenames #define vmCHARSET_FILENAME 0x02 //!< Character set allowed in file names #define vmCHARSET_BTPASSKEY 0x04 //!< Character set allowed in bluetooth pass key #define vmCHARSET_WIFIPASSKEY 0x08 //!< Character set allowed in WiFi pass key #define vmCHARSET_WIFISSID 0x10 //!< Character set allowed in WiFi ssid /*
*/ #define PROJECT "LMS2012" #define VERS 1.04 #define SPECIALVERS 'H' //!< Minor version (not shown if less than ASCII zero) #define MAX_PROGRAMS SLOTS //!< Max number of programs (including UI and direct commands) running at a time #define MAX_BREAKPOINTS 4 //!< Max number of breakpoints (opCODES depends on this value) #define MAX_LABELS 32 //!< Max number of labels per program #define MAX_DEVICE_TYPE 127 //!< Highest type number (positive) #define MAX_VALID_TYPE vmMAX_VALID_TYPE //!< Highest valid type #define MAX_DEVICE_MODES 8 //!< Max number of modes in one device #define MAX_DEVICE_DATASETS 8 //!< Max number of data sets in one device #define MAX_DEVICE_DATALENGTH 32 //!< Max device data length #define MAX_DEVICE_BUSY_TIME 1200 //!< Max number of mS a device can be busy when read #define MAX_DEVICE_TYPES ((MAX_DEVICE_TYPE + 1) * MAX_DEVICE_MODES)//!< Max number of different device types and modes (max type data list size) #define MAX_FRAMES_PER_SEC 10 //!< Max frames per second update in display #define CACHE_DEEPT 10 //!< Max number of programs cached (in RECENT FILES MENU) #define MAX_HANDLES 250 //!< Max number of handles to memory pools and arrays in one program #define MAX_ARRAY_SIZE 1000000000 //!< Max array size #define MIN_ARRAY_ELEMENTS 0 //!< Min elements in a DATA8 array #define INSTALLED_MEMORY 6000 //!< Flash allocated to hold user programs/data #define RESERVED_MEMORY 100 //!< Memory reserve for system [KB] #define LOW_MEMORY 500 //!< Low memory warning [KB] #define LOGBUFFER_SIZE 1000 //!< Min log buffer size #define DEVICE_LOGBUF_SIZE 300 //!< Device log buffer size (black layer buffer) #define MIN_LIVE_UPDATE_TIME 10 //!< [mS] Min sample time when live update #define MIN_IIC_REPEAT_TIME 10 //!< [mS] Min IIC device repeat time #define MAX_IIC_REPEAT_TIME 1000 //!< [mS] Max IIC device repeat time #define MAX_COMMAND_BYTECODES 64 //!< Max number of byte codes in a debug terminal direct command #define MAX_COMMAND_LOCALS 64 //!< Max number of bytes allocated for direct command local variables #define MAX_COMMAND_GLOBALS 1021 //!< Max number of bytes allocated for direct command global variables #define UI_PRIORITY 20 //!< UI byte codes before switching VM thread #define C_PRIORITY 200 //!< C call byte codes #ifndef DISABLE_PREEMPTED_VM #define PRG_PRIORITY 2000 //!< Prg byte codes before switching VM thread #else #define PRG_PRIORITY 200 //!< Prg byte codes before switching VM thread #endif #define BUTTON_DEBOUNCE_TIME 30 #define BUTTON_START_REPEAT_TIME 400 #define BUTTON_REPEAT_TIME 200 #define LONG_PRESS_TIME 3000 //!< [mS] Time pressed before long press recognised #define ADC_REF 5000 //!< [mV] maximal value on ADC #define ADC_RES 4095 //!< [CNT] maximal count on ADC #define IN1_ID_HYSTERESIS 50 //!< [mV] half of the span one Id takes up on input connection 1 voltage #define OUT5_ID_HYSTERESIS 100 //!< [mV] half of the span one Id takes up on output connection 5 voltage #define DEVICE_UPDATE_TIME 1000000 //!< Min device (sensor) update time [nS] #define DELAY_TO_TYPEDATA 10000 //!< Time from daisy chain active to upload type data [mS] #define DAISYCHAIN_MODE_TIME 10 //!< Time for daisy chain change mode [mS] #define MAX_FILE_HANDLES 64 //!< Max number of down load file handles #define MIN_HANDLE 3 //!< Min file handle to close #define ID_LENGTH 7 //!< Id length (BT MAC id) (incl. zero terminator) #define NAME_LENGTH 12 //!< Name length (not including zero termination) #define ERROR_BUFFER_SIZE 8 //!< Number of errors in buffer #define PWM_DEVICE "lms_pwm" //!< PWM device name #define PWM_DEVICE_NAME "/dev/lms_pwm" //!< PWM device file name #define MOTOR_DEVICE "lms_motor" //!< TACHO device name #define MOTOR_DEVICE_NAME "/dev/lms_motor" //!< TACHO device file name #define ANALOG_DEVICE "lms_analog" //!< ANALOG device name #define ANALOG_DEVICE_NAME "/dev/lms_analog" //!< ANALOG device file name #define POWER_DEVICE "lms_power" //!< POWER device name #define POWER_DEVICE_NAME "/dev/lms_power" //!< POWER device file name #define DCM_DEVICE "lms_dcm" //!< DCM device name #define DCM_DEVICE_NAME "/dev/lms_dcm" //!< DCM device file name #define UI_DEVICE "lms_ui" //!< UI device name #define UI_DEVICE_NAME "/dev/lms_ui" //!< UI device file name #define LCD_DEVICE "lms_display" //!< DISPLAY device name //#define LCD_DEVICE_NAME "/dev/lms_display" //!< DISPLAY device file name #define LCD_DEVICE_NAME "/dev/fb0" //!< DISPLAY device file name #define UART_DEVICE "lms_uart" //!< UART device name #define UART_DEVICE_NAME "/dev/lms_uart" //!< UART device file name #define USBDEV_DEVICE "lms_usbdev" //!< USB device #define USBDEV_DEVICE_NAME "/dev/lms_usbdev" //!< USB device #define USBHOST_DEVICE "lms_usbhost" //!< USB host #define USBHOST_DEVICE_NAME "/dev/lms_usbhost" //!< USB host #define SOUND_DEVICE "lms_sound" //!< SOUND device name #define SOUND_DEVICE_NAME "/dev/lms_sound" //!< SOUND device #define IIC_DEVICE "lms_iic" //!< IIC device name #define IIC_DEVICE_NAME "/dev/lms_iic" //!< IIC device #define BT_DEVICE "lms_bt" //!< BT device name #define BT_DEVICE_NAME "/dev/lms_bt" //!< BT device #define UPDATE_DEVICE "lms_update" //!< UPDATE device name #define UPDATE_DEVICE_NAME "/dev/lms_update" //!< UPDATE device #define TEST_PIN_DEVICE "lms_tst_pin" //!< TEST pin device name #define TEST_PIN_DEVICE_NAME "/dev/lms_tst_pin" //!< TEST pin device file name #define TEST_UART_DEVICE "lms_tst_uart" //!< TEST UART device name #define TEST_UART_DEVICE_NAME "/dev/lms_tst_uart" //!< TEST UART device file name #define DIR_DEEPT vmDIR_DEEPT //!< Max directory items allocated // File //*********************************************************************************************************************** //! \todo Filename sizes should only use vmPATHSIZE, vmNAMESIZE, vmEXTSIZE and vmFILENAMESIZE #define FILENAMESIZE vmFILENAMESIZE //!< All inclusive (path, filename, extension and zero termination) #define FILENAME_SIZE 52 //!< User filename size without extension including zero #define FOLDERNAME_SIZE 10 //!< Folder name size relative to "lms2012" folder including zero #define SUBFOLDERNAME_SIZE FILENAME_SIZE //!< Sub folder name size without "/" including zero #define MAX_FILENAME_SIZE (FOLDERNAME_SIZE + SUBFOLDERNAME_SIZE + FILENAME_SIZE + 5) //*********************************************************************************************************************** #define TYPEDATE_FILE_NAME "typedata" //!< TypeData filename #define ICON_FILE_NAME "icon" //!< Icon image filename #define TEXT_FILE_NAME "text" //!< Text filename #define DEMO_FILE_NAME "../prjs/BrkProg_SAVE/Demo.rpf" // Memory // SD card #ifdef Linux_X86 #define SDCARD_DEVICE1 "/dev/mmcblk0" #define SDCARD_DEVICE2 "/dev/mmcblk0p1" #else #define SDCARD_DEVICE1 "/dev/mmcblk0" #define SDCARD_DEVICE2 "/dev/mmcblk0p1" #endif #define SDCARD_MOUNT "./mount_sdcard" #define SDCARD_UNMOUNT "./unmount_sdcard" // USB stick #ifndef Linux_X86 #define USBSTICK_DEVICE "/dev/sda" #else #define USBSTICK_DEVICE "/dev/sdf1" #endif #define USBSTICK_MOUNT "./mount_usbstick" #define USBSTICK_UNMOUNT "./unmount_usbstick" /* #define DEFAULT_PRJS_FOLDER "~/lms2012/prjs" //!< Project folder name without trailing "/" #define DEFAULT_APPS_FOLDER "~/lms2012/apps" //!< Applet folder name without trailing "/" #define DEFAULT_TOOLS_FOLDER "~/lms2012/tools" //!< Setting folder name without trailing "/" #define DEFAULT_SYS_FOLDER "~/lms2012/sys" //!< System folder name without trailing "/" #define DEFAULT_SETUP_FOLDER "~/lms2012/sys" //!< Setup folder name without trailing "/" #define DEFAULT_SD_FOLDER "~/lms2012/SD Card" //!< Sd card folder name without trailing "/" #define DEFAULT_USB_FOLDER "~/lms2012/USB Memory"//!< USB Memory folder name without trailing "/" */ #define DEFAULT_FOLDER "ui" //!< Folder containing the first small programs #define DEFAULT_UI "ui" //!< Default user interface #define DEFAULT_VOLUME vmDEFAULT_VOLUME #define DEFAULT_SLEEPMINUTES vmDEFAULT_SLEEPMINUTES #define COM_CMD_DEVICE_NAME USBDEV_DEVICE_NAME //!< USB HID command pipe device file name /*!