aboutsummaryrefslogtreecommitdiffhomepage
path: root/AT91SAM7S256/Source/Functions.inl
diff options
context:
space:
mode:
Diffstat (limited to 'AT91SAM7S256/Source/Functions.inl')
-rw-r--r--AT91SAM7S256/Source/Functions.inl4331
1 files changed, 0 insertions, 4331 deletions
diff --git a/AT91SAM7S256/Source/Functions.inl b/AT91SAM7S256/Source/Functions.inl
deleted file mode 100644
index 1424721..0000000
--- a/AT91SAM7S256/Source/Functions.inl
+++ /dev/null
@@ -1,4331 +0,0 @@
-//
-// Programmer
-//
-// Date init 26.04.2005
-//
-// Reviser $Author:: Dktochpe $
-//
-// Revision date $Date:: $
-//
-// Filename $Workfile:: $
-//
-// Version $Revision:: $
-//
-// Archive $Archive:: $
-//
-// Platform C
-//
-
-//******* cUiBtTest **********************************************************
-
-const UBYTE NONVOLATILE_NAME[] = UI_NONVOLATILE; // Non volatile filename without extention
-const UBYTE DEFAULT_PROGRAM_NAME[] = UI_PROGRAM_DEFAULT; // On brick programming filename without extention
-const UBYTE TEMP_PROGRAM_FILENAME[] = UI_PROGRAM_TEMP; // On brick programming tmp filename without extention
-const UBYTE VM_PROGRAM_READER[] = UI_PROGRAM_READER; // On brick programming script reader filename without extention
-const UBYTE TEMP_DATALOG_FILENAME[] = UI_DATALOG_TEMP; // On brick datalog tmp filename without extention
-const UBYTE DEFAULT_DATALOG_NAME[] = UI_DATALOG_DEFAULT; // On brick datalog filename without extention
-const UBYTE DEFAULT_PIN_CODE[] = UI_PINCODE_DEFAULT; // Default blue tooth pin code
-const UBYTE TXT_INVALID_SENSOR[] = "??????????????"; // Display invalid sensor data
-
-
-#define SENSORS (MENU_SENSOR_INVALID - MENU_SENSOR_EMPTY)
-
-const UBYTE SENSORTYPE[SENSORS] = // for view and datalog
-{
- 0, // MENU_SENSOR_EMPTY
- SOUND_DB, // MENU_SENSOR_SOUND_DB
- SOUND_DBA, // MENU_SENSOR_SOUND_DBA
- LIGHT_ACTIVE, // MENU_SENSOR_LIGHT
- LIGHT_INACTIVE, // MENU_SENSOR_LIGHT_AMB
- SWITCH, // MENU_SENSOR_TOUCH
- 0, // MENU_SENSOR_MOTOR_DEG
- 0, // MENU_SENSOR_MOTOR_ROT
- LOWSPEED_9V, // MENU_SENSOR_ULTRASONIC_IN
- LOWSPEED_9V, // MENU_SENSOR_ULTRASONIC_CM
- LOWSPEED_9V, // MENU_SENSOR_IIC_TEMP_C
- LOWSPEED_9V, // MENU_SENSOR_IIC_TEMP_F
- COLORFULL // MENU_SENSOR_COLOR
-};
-
-const UBYTE SENSORMODE[SENSORS] = // for view and datalog
-{
- 0, // MENU_SENSOR_EMPTY
- PCTFULLSCALEMODE, // MENU_SENSOR_SOUND_DB
- PCTFULLSCALEMODE, // MENU_SENSOR_SOUND_DBA
- PCTFULLSCALEMODE, // MENU_SENSOR_LIGHT
- PCTFULLSCALEMODE, // MENU_SENSOR_LIGHT_AMB
- BOOLEANMODE, // MENU_SENSOR_TOUCH
- 0, // MENU_SENSOR_MOTOR_DEG
- 0, // MENU_SENSOR_MOTOR_ROT
- 0, // MENU_SENSOR_ULTRASONIC_IN
- 0, // MENU_SENSOR_ULTRASONIC_CM
- 0, // MENU_SENSOR_IIC_TEMP_C
- 0, // MENU_SENSOR_IIC_TEMP_F
- 0 // MENU_SENSOR_COLOR
-};
-
-const UBYTE SENSORFORMAT[SENSORS][9] =
-{
- "", // MENU_SENSOR_EMPTY
- "%3.0f %%", // MENU_SENSOR_SOUND_DB
- "%3.0f %%", // MENU_SENSOR_SOUND_DBA
- "%3.0f %%", // MENU_SENSOR_LIGHT
- "%3.0f %%", // MENU_SENSOR_LIGHT_AMB
- "%1.0f", // MENU_SENSOR_TOUCH
- "%8.0f `", // MENU_SENSOR_MOTOR_DEG
- "%8.0f R", // MENU_SENSOR_MOTOR_ROT
- "%3.0f In", // MENU_SENSOR_ULTRASONIC_IN
- "%3.0f cm", // MENU_SENSOR_ULTRASONIC_CM
- "%5.1f `C", // MENU_SENSOR_IIC_TEMP_C
- "%5.1f `F", // MENU_SENSOR_IIC_TEMP_F
- "%9.0f" // MENU_SENSOR_COLOR (no of characters)
-};
-
-const float SENSORDIVIDER[SENSORS] =
-{
- 1.0f, // MENU_SENSOR_EMPTY
- 1.0f, // MENU_SENSOR_SOUND_DB
- 1.0f, // MENU_SENSOR_SOUND_DBA
- 1.0f, // MENU_SENSOR_LIGHT
- 1.0f, // MENU_SENSOR_LIGHT_AMB
- 1.0f, // MENU_SENSOR_TOUCH
- 1.0f, // MENU_SENSOR_MOTOR_DEG
- 360.0f, // MENU_SENSOR_MOTOR_ROT
- 2.54f, // MENU_SENSOR_ULTRASONIC_IN
- 1.0f, // MENU_SENSOR_ULTRASONIC_CM
- 10.0f, // MENU_SENSOR_IIC_TEMP_C
- 10.0f, // MENU_SENSOR_IIC_TEMP_F
- 1.0f // MENU_SENSOR_COLOR
-};
-
-
-#define SENSORSYNCDATA "Sync data"
-#define SENSORSDATA "Sdata"
-#define SENSORTIME "Time"
-
-
-const UBYTE SENSORDIRNAME[SENSORS - 1][19] =
-{
- "Sound Sensor", // MENU_SENSOR_SOUND_DB
- "Sound Sensor", // MENU_SENSOR_SOUND_DBA
- "Light Sensor", // MENU_SENSOR_LIGHT
- "Light Sensor", // MENU_SENSOR_LIGHT_AMB
- "Bumper", // MENU_SENSOR_TOUCH
- "FP Rotation Sensor", // MENU_SENSOR_MOTOR_DEG
- "FP Rotation Sensor", // MENU_SENSOR_MOTOR_ROT
- "Distance Sensor", // MENU_SENSOR_ULTRASONIC_IN
- "Distance Sensor", // MENU_SENSOR_ULTRASONIC_CM
- "NXT Temp Sensor", // MENU_SENSOR_IIC_TEMP_C
- "NXT Temp Sensor", // MENU_SENSOR_IIC_TEMP_F
- "Color Detector" // MENU_SENSOR_COLOR
-};
-
-const UBYTE SENSORUNITNAME[SENSORS - 1][5] =
-{
- "_dB", // MENU_SENSOR_SOUND_DB
- "_dBa", // MENU_SENSOR_SOUND_DBA
- "_on", // MENU_SENSOR_LIGHT
- "_off", // MENU_SENSOR_LIGHT_AMB
- "", // MENU_SENSOR_TOUCH
- "_deg", // MENU_SENSOR_MOTOR_DEG
- "_rot", // MENU_SENSOR_MOTOR_ROT
- "_in", // MENU_SENSOR_ULTRASONIC_IN
- "_cm", // MENU_SENSOR_ULTRASONIC_CM
- "_C", // MENU_SENSOR_IIC_TEMP_C
- "_F", // MENU_SENSOR_IIC_TEMP_F
- "_0", // MENU_SENSOR_COLOR
-};
-
-const UBYTE SENSORFORMAT2[SENSORS - 1][6] =
-{
- "\t%.0f", // MENU_SENSOR_SOUND_DB
- "\t%.0f", // MENU_SENSOR_SOUND_DBA
- "\t%.0f", // MENU_SENSOR_LIGHT
- "\t%.0f", // MENU_SENSOR_LIGHT_AMB
- "\t%.0f", // MENU_SENSOR_TOUCH
- "\t%.0f", // MENU_SENSOR_MOTOR_DEG
- "\t%.0f", // MENU_SENSOR_MOTOR_ROT
- "\t%.0f", // MENU_SENSOR_ULTRASONIC_IN
- "\t%.0f", // MENU_SENSOR_ULTRASONIC_CM
- "\t%.1f", // MENU_SENSOR_IIC_TEMP_C
- "\t%.1f", // MENU_SENSOR_IIC_TEMP_F
- "\t%.0f" // MENU_SENSOR_COLOR
-};
-
-
-//******* cUiWriteLowspeed ***************************************************
-
-void cUiWriteLowspeed(UBYTE Port,UBYTE TxBytes,UBYTE *TxBuf,UBYTE RxBytes)
-{
- Port -= MENU_PORT_1;
- pMapLowSpeed->OutBuf[Port].InPtr = 0;
- pMapLowSpeed->OutBuf[Port].OutPtr = 0;
-
- while (TxBytes)
- {
- pMapLowSpeed->OutBuf[Port].Buf[pMapLowSpeed->OutBuf[Port].InPtr] = *TxBuf;
- pMapLowSpeed->OutBuf[Port].InPtr++;
- TxBuf++;
- TxBytes--;
- }
- pMapLowSpeed->InBuf[Port].BytesToRx = RxBytes;
- pMapLowSpeed->ChannelState[Port] = LOWSPEED_INIT;
- pMapLowSpeed->State |= (COM_CHANNEL_ONE_ACTIVE << Port);
-}
-
-
-//******* cUiReadLowspeed ****************************************************
-
-#define IIC_READY 0
-#define IIC_BUSY 1
-#define IIC_ERROR 2
-
-UBYTE cUiReadLowspeed(UBYTE Port,UBYTE RxBytes,UWORD *Value)
-{
- UBYTE Result;
-
- *Value = 0;
- Port -= MENU_PORT_1;
- if ((pMapLowSpeed->ChannelState[Port] == LOWSPEED_IDLE) || (pMapLowSpeed->ChannelState[Port] == LOWSPEED_DONE))
- {
- while (RxBytes)
- {
- (*Value) <<= 8;
- (*Value) |= (UWORD)(pMapLowSpeed->InBuf[Port].Buf[pMapLowSpeed->InBuf[Port].OutPtr]);
- pMapLowSpeed->InBuf[Port].OutPtr++;
- if (pMapLowSpeed->InBuf[Port].OutPtr >= SIZE_OF_LSBUF)
- {
- pMapLowSpeed->InBuf[Port].OutPtr = 0;
- }
- RxBytes--;
- }
- Result = IIC_READY;
- }
- else
- {
- if (pMapLowSpeed->ErrorType[Port] == LOWSPEED_CH_NOT_READY)
- {
- Result = IIC_ERROR;
- }
- else
- {
- Result = IIC_BUSY;
- }
- }
-
- return (Result);
-}
-
-
-//******* cUiUpdateSensor ****************************************************
-
-#define SENSOR_SETUP 0
-#define SENSOR_ACQUIRE 3
-#define SENSOR_READ 8
-#define SENSOR_STATES 10
-
-void cUiUpdateSensor(SWORD Time)
-{
- UBYTE Port;
- UBYTE Sensor;
- UBYTE Result;
- SWORD Tmp;
-
- if (VarsUi.SensorReset == TRUE)
- {
- for (Port = MENU_PORT_1;Port < MENU_PORT_INVALID;Port++)
- {
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = FALSE;
- }
- VarsUi.SensorTimer = (MIN_SENSOR_READ_TIME / SENSOR_STATES);
- VarsUi.SensorState = SENSOR_SETUP;
- }
-
- VarsUi.SensorTimer += Time;
- if (VarsUi.SensorTimer >= (MIN_SENSOR_READ_TIME / SENSOR_STATES))
- {
- VarsUi.SensorTimer -= (MIN_SENSOR_READ_TIME / SENSOR_STATES);
-
- for (Port = MENU_PORT_1;Port < MENU_PORT_INVALID;Port++)
- {
- Sensor = VarsUi.DatalogPort[Port - MENU_PORT_1];
-
- if (Sensor != MENU_SENSOR_EMPTY)
- {
- if ((Sensor == MENU_SENSOR_MOTOR_DEG) || (Sensor == MENU_SENSOR_MOTOR_ROT))
- {
- if (VarsUi.SensorReset == TRUE)
- {
- pMapOutPut->Outputs[Port - MENU_PORT_A].Mode &= ~(BRAKE | MOTORON);
- pMapOutPut->Outputs[Port - MENU_PORT_A].Flags |= UPDATE_MODE | UPDATE_SPEED | UPDATE_RESET_COUNT;
- pMapOutPut->Outputs[Port - MENU_PORT_A].TachoCnt = 0;
- }
- if (VarsUi.SensorState == SENSOR_READ)
- {
- VarsUi.DatalogSampleValue[Port - MENU_PORT_1] = pMapOutPut->Outputs[Port - MENU_PORT_A].TachoCnt;
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = TRUE;
- }
- }
- else
- {
- pMapInput->Inputs[Port - MENU_PORT_1].SensorType = SENSORTYPE[Sensor - MENU_SENSOR_EMPTY];
- pMapInput->Inputs[Port - MENU_PORT_1].SensorMode = SENSORMODE[Sensor - MENU_SENSOR_EMPTY];
- if ((Sensor == MENU_SENSOR_ULTRASONIC_IN) || (Sensor == MENU_SENSOR_ULTRASONIC_CM))
- {
- if (VarsUi.SensorReset == TRUE)
- {
- cUiWriteLowspeed(Port,3,"\x02\x41\x02",0);
- }
- if (VarsUi.SensorState == SENSOR_ACQUIRE)
- {
- cUiWriteLowspeed(Port,2,"\x02\x42",1);
- }
- if (VarsUi.SensorState == SENSOR_READ)
- {
- Result = cUiReadLowspeed(Port,1,(UWORD*)&Tmp);
- if (Result == IIC_READY)
- {
- if ((UBYTE)Tmp != 0xFF)
- {
- VarsUi.DatalogSampleValue[Port - MENU_PORT_1] = (SLONG)Tmp;
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = TRUE;
- }
- else
- {
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = FALSE;
- }
- }
- else
- {
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = FALSE;
- }
- }
- }
- else
- {
- if ((Sensor == MENU_SENSOR_IIC_TEMP_C) || (Sensor == MENU_SENSOR_IIC_TEMP_F))
- {
- if (VarsUi.SensorState == SENSOR_SETUP)
- {
- cUiWriteLowspeed(Port,3,"\x98\x01\x60",0);
- }
- if (VarsUi.SensorState == SENSOR_ACQUIRE)
- {
- cUiWriteLowspeed(Port,2,"\x98\x00",2);
- }
- if (VarsUi.SensorState == SENSOR_READ)
- {
- Result = cUiReadLowspeed(Port,2,(UWORD*)&Tmp);
- if (Result == IIC_READY)
- {
-// if (Tmp >= -14080)
- {
- if (Sensor == MENU_SENSOR_IIC_TEMP_F)
- {
- VarsUi.DatalogSampleValue[Port - MENU_PORT_1] = (SLONG)((float)(Tmp + 4544) / 14.2f);
- }
- else
- {
- VarsUi.DatalogSampleValue[Port - MENU_PORT_1] = (SLONG)((float)Tmp / 25.6f);
- }
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = TRUE;
- }
- }
- else
- {
- if (Result == IIC_ERROR)
- {
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = FALSE;
- }
- }
- }
- }
- else
- {
- if (VarsUi.SensorState == SENSOR_READ)
- {
- if (pMapInput->Inputs[Port - MENU_PORT_1].InvalidData != INVALID_DATA)
- {
- VarsUi.DatalogSampleValue[Port - MENU_PORT_1] = pMapInput->Inputs[Port - MENU_PORT_1].SensorValue;
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = TRUE;
- }
- else
- {
- VarsUi.DatalogSampleValid[Port - MENU_PORT_1] = FALSE;
- }
- }
- }
- }
- }
- }
- }
-
- VarsUi.SensorState++;
- if (VarsUi.SensorState >= SENSOR_STATES)
- {
- VarsUi.SensorState = SENSOR_SETUP;
- }
-
- VarsUi.SensorReset = FALSE;
- }
-}
-
-
-//******* cUiGetCustomPctFullScale *******************************************
-
-
-UBYTE cUiGetCustomPctFullScale(UBYTE Port,UBYTE Sensor)
-{
- UBYTE Result = 0;
-
- if ((Sensor != MENU_SENSOR_MOTOR_DEG) && (Sensor != MENU_SENSOR_MOTOR_ROT))
- {
- Result = (UBYTE)pMapInput->Inputs[Port - MENU_PORT_1].CustomPctFullScale;
- }
-
- return (Result);
-}
-
-
-
-//******* cUiGetCustomActiveStatus *******************************************
-
-
-UBYTE cUiGetCustomActiveStatus(UBYTE Port,UBYTE Sensor)
-{
- UBYTE Result = 0;
-
- if ((Sensor != MENU_SENSOR_MOTOR_DEG) && (Sensor != MENU_SENSOR_MOTOR_ROT))
- {
- Result = (UBYTE)pMapInput->Inputs[Port - MENU_PORT_1].CustomActiveStatus;
- }
-
- return (Result);
-}
-
-
-
-//******* cUiPrintSensorInDisplayBuffer **************************************
-
-#define COLORNAMES 6
-
-const UBYTE COLORNAME[COLORNAMES][10] =
-{
- "1. Black ",
- "2. Blue ",
- "3. Green ",
- "4. Yellow",
- "5. Red ",
- "6. White "
-};
-
-
-void cUiPrintSensorInDisplayBuffer(UBYTE Port)
-{
- UBYTE Sensor;
- float Value;
- SWORD Size;
- SWORD Index;
-
- Port -= MENU_PORT_1;
- Sensor = VarsUi.DatalogPort[Port] - MENU_SENSOR_EMPTY;
- Value = (float)VarsUi.DatalogSampleValue[Port] / (float)SENSORDIVIDER[Sensor];
- Size = sprintf((char*)VarsUi.DisplayBuffer,(char*)SENSORFORMAT[Sensor],(float)0);
- sprintf((char*)VarsUi.DisplayBuffer,"%*.*s",Size,Size,(char*)TXT_INVALID_SENSOR);
-
- if (VarsUi.DatalogSampleValid[Port] == TRUE)
- {
- if (Sensor == (MENU_SENSOR_COLOR - MENU_SENSOR_EMPTY))
- {
- Index = (SWORD)Value - 1;
- if ((Index >= 0) && (Index < COLORNAMES))
- {
- sprintf((char*)VarsUi.DisplayBuffer,(char*)COLORNAME[Index]);
- }
- }
- else
- {
- if (Size < sprintf((char*)VarsUi.DisplayBuffer,(char*)SENSORFORMAT[Sensor],Value))
- {
- sprintf((char*)VarsUi.DisplayBuffer,"%*.*s",Size,Size,(char*)TXT_INVALID_SENSOR);
- }
- }
- }
-}
-
-
-//******* cUiReleaseSensors **************************************************
-
-void cUiReleaseSensors(void)
-{
- UBYTE Tmp;
-
- for (Tmp = 0;Tmp < NO_OF_INPUTS;Tmp++)
- {
- pMapInput->Inputs[Tmp].SensorType = NO_SENSOR;
- }
-}
-
-
-
-//******* cUiBtCommand *******************************************************
-
-enum
-{
- UI_BT_CTRL,
-
- UI_BT_GET_DEVICES, // (UI_BT_GET_DEVICES,Known,*pDevices,NULL) [Known = 0,1]
- UI_BT_GET_DEVICE_NAME, // (UI_BT_GET_DEVICE_NAME,Known,*pIndex,*pDeviceName) [Known = 0,1]
- UI_BT_GET_DEVICE_TYPE, // (UI_BT_GET_DEVICE_TYPE,Known,*pIndex,*pDeviceType) [Known = 0,1]
-
- UI_BT_GET_CONNECTION_NAME, // (UI_BT_GET_CONNECTION_NAME,NULL,*pConnection,*pConnectionName)
- UI_BT_GET_CONNECTION_TYPE, // (UI_BT_GET_CONNECTION_TYPE,NULL,*pConnection,*pConnectionType)
- UI_BT_GET_CONNECTION_VALID, // (UI_BT_GET_CONNECTION_NAME,NULL,*pConnection,NULL)
-
- UI_BT_DUMMY
-};
-
-
-#define UI_BT_FAILED 0x8200 // General command failed
-#define UI_BT_SUCCES 0x0000 // Command executed succesfully
-
-
-UBYTE cUiBTGetDeviceType(UBYTE *pCOD)
-{
- ULONG COD;
- UBYTE Result;
- UBYTE Tmp;
-
- COD = 0;
- for (Tmp = 0;Tmp < SIZE_OF_CLASS_OF_DEVICE;Tmp++)
- {
- COD <<= 8;
- COD |= (ULONG)*pCOD;
- pCOD++;
- }
-
- Result = DEVICETYPE_UNKNOWN;
- if ((COD & 0x00001FFF) == 0x00000804)
- {
- Result = DEVICETYPE_NXT;
- }
- if ((COD & 0x00001F00) == 0x00000200)
- {
- Result = DEVICETYPE_PHONE;
- }
- if ((COD & 0x00001F00) == 0x00000100)
- {
- Result = DEVICETYPE_PC;
- }
-
- return (Result);
-}
-
-
-UBYTE cUiBTGetDeviceIndex(UBYTE Known,UBYTE No,UBYTE *pIndex)
-{
- UBYTE Result = 0;
- UBYTE Tmp;
-
- *pIndex = 0;
- if (Known)
- {
- for (Tmp = 0;(Tmp < SIZE_OF_BT_DEVICE_TABLE) && (Result == 0);Tmp++)
- {
- if ((pMapComm->BtDeviceTable[Tmp].DeviceStatus & BT_DEVICE_KNOWN))
- {
- if (No == *pIndex)
- {
- *pIndex = Tmp;
- Result = ~0;
- }
- else
- {
- (*pIndex)++;
- }
- }
- }
- }
- else
- {
- for (Tmp = 0;(Tmp < SIZE_OF_BT_DEVICE_TABLE) && (Result == 0);Tmp++)
- {
- if ((pMapComm->BtDeviceTable[Tmp].DeviceStatus & BT_DEVICE_UNKNOWN) || (pMapComm->BtDeviceTable[Tmp].DeviceStatus & BT_DEVICE_KNOWN))
- {
- if (No == *pIndex)
- {
- *pIndex = Tmp;
- Result = ~0;
- }
- else
- {
- (*pIndex)++;
- }
- }
- }
- }
-
- return (Result);
-}
-
-
-UWORD cUiBTCommand(UBYTE Cmd,UBYTE Flag,UBYTE *pParam1,UBYTE *pParam2)
-{
- UWORD Result = UI_BT_FAILED;
-
- switch(Cmd)
- {
- case UI_BT_GET_DEVICES :
- {
- cUiBTGetDeviceIndex(Flag,SIZE_OF_BT_DEVICE_TABLE,pParam1);
- Result = UI_BT_SUCCES;
- }
- break;
-
- case UI_BT_GET_DEVICE_NAME :
- {
- if ((*pParam1 < SIZE_OF_BT_DEVICE_TABLE) && (pParam2 != NULL))
- {
- pParam2[0] = 0;
- if (cUiBTGetDeviceIndex(Flag,*pParam1,&VarsUi.BTTmpIndex))
- {
- sprintf((char*)pParam2,"%.*s",DISPLAYLINE_LENGTH,(char*)pMapComm->BtDeviceTable[VarsUi.BTTmpIndex].Name);
- Result = UI_BT_SUCCES;
- }
- }
- }
- break;
-
- case UI_BT_GET_DEVICE_TYPE :
- {
- if ((*pParam1 < SIZE_OF_BT_DEVICE_TABLE) && (pParam2 != NULL))
- {
- pParam2[0] = 0;
- if (cUiBTGetDeviceIndex(Flag,*pParam1,&VarsUi.BTTmpIndex))
- {
- pParam2[0] = cUiBTGetDeviceType(pMapComm->BtDeviceTable[VarsUi.BTTmpIndex].ClassOfDevice);
- Result = UI_BT_SUCCES;
- }
- }
- }
- break;
-
- case UI_BT_GET_CONNECTION_NAME :
- {
- if (*pParam1 < SIZE_OF_BT_CONNECT_TABLE)
- {
- if (pMapComm->BtConnectTable[*pParam1].Name[0])
- {
- if (pParam2 != NULL)
- {
- sprintf((char*)pParam2,"%.*s",DISPLAYLINE_LENGTH,(char*)pMapComm->BtConnectTable[*pParam1].Name);
- }
- Result = UI_BT_SUCCES;
- }
- else
- {
- if (pParam2 != NULL)
- {
- pParam2[0] = 0;
- }
- }
- }
- }
- break;
-
- case UI_BT_GET_CONNECTION_TYPE :
- {
- if ((*pParam1 < SIZE_OF_BT_CONNECT_TABLE) && (pParam2 != NULL))
- {
- pParam2[0] = 0;
- if (pMapComm->BtConnectTable[*pParam1].Name[0])
- {
- pParam2[0] = cUiBTGetDeviceType(pMapComm->BtConnectTable[*pParam1].ClassOfDevice);
- Result = UI_BT_SUCCES;
- }
- }
- }
- break;
-
- case UI_BT_GET_CONNECTION_VALID :
- {
- if (*pParam1 < SIZE_OF_BT_CONNECT_TABLE)
- {
- if (pMapComm->BtConnectTable[*pParam1].Name[0])
- {
- Result = UI_BT_SUCCES;
- }
- }
- }
- break;
-
- }
-
- return (Result);
-}
-
-
-
-#include "BtTest.inc"
-
-//******* cUiNVxxxxx *********************************************************
-
-void cUiNVWrite(void)
-{
- sprintf((char*)VarsUi.NVFilename,"%s.%s",(char*)NONVOLATILE_NAME,(char*)TXT_SYS_EXT);
- VarsUi.NVTmpHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.NVFilename,VarsUi.SearchFilenameBuffer,&VarsUi.NVTmpLength);
- if (!(VarsUi.NVTmpHandle & 0x8000))
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.NVTmpHandle,NULL,NULL);
- pMapLoader->pFunc(DELETE,VarsUi.NVFilename,NULL,NULL);
- }
- VarsUi.NVTmpLength = sizeof(NVDATA);
- VarsUi.NVTmpHandle = pMapLoader->pFunc(OPENWRITE,VarsUi.NVFilename,NULL,&VarsUi.NVTmpLength);
- pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.NVTmpHandle,(UBYTE*)&VarsUi.NVData,&VarsUi.NVTmpLength);
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.NVTmpHandle,NULL,NULL);
-}
-
-
-void cUiNVRead(void)
-{
- VarsUi.NVData.CheckByte = 0;
- sprintf((char*)VarsUi.NVFilename,"%s.%s",(char*)NONVOLATILE_NAME,(char*)TXT_SYS_EXT);
- VarsUi.NVTmpHandle = pMapLoader->pFunc(OPENREAD,VarsUi.NVFilename,NULL,&VarsUi.NVTmpLength);
- if (!(VarsUi.NVTmpHandle & 0x8000))
- {
- VarsUi.NVTmpLength = sizeof(NVDATA);
- pMapLoader->pFunc(READ,(UBYTE*)&VarsUi.NVTmpHandle,(UBYTE*)&VarsUi.NVData,&VarsUi.NVTmpLength);
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.NVTmpHandle,NULL,NULL);
- }
- if (VarsUi.NVData.CheckByte != CHECKBYTE)
- {
- VarsUi.NVData.DatalogEnabled = DATALOGENABLED;
- VarsUi.NVData.VolumeStep = MAX_VOLUME;
- VarsUi.NVData.PowerdownCode = POWER_OFF_TIME_DEFAULT;
- VarsUi.NVData.DatalogNumber = 0;
- VarsUi.NVData.CheckByte = CHECKBYTE;
- cUiNVWrite();
- }
-}
-
-
-//******* cUiFeedback ********************************************************
-
-UBYTE cUiFeedback(BMPMAP *Bitmap,UBYTE TextNo1,UBYTE TextNo2,UWORD Time) // Show bimap and text
-{
-// if ((VarsUi.FBState == 0) || ((pMapDisplay->Flags & DISPLAY_POPUP) == 0))
- {
- switch (VarsUi.FBState)
- {
- case 0 : // Set busy
- {
- VarsUi.FBState++;
- }
- break;
-
- case 1 : // Clear line 2,3,4
- {
- if (DISPLAY_IDLE)
- {
- pMapDisplay->EraseMask |= (TEXTLINE_BIT(TEXTLINE_2) | TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4));
- VarsUi.FBState++;
- }
- }
- break;
-
- case 2 : // Show bitmap if pressent
- {
- if (DISPLAY_IDLE)
- {
- if (Bitmap != NULL)
- {
- pMapDisplay->pBitmaps[BITMAP_1] = Bitmap;
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_1);
- }
- VarsUi.FBState++;
- }
- }
- break;
-
- case 3 : // Get text string
- {
- if (DISPLAY_IDLE)
- {
- pMapDisplay->UpdateMask |= SPECIAL_BIT(TOPLINE);
- VarsUi.FBText = cUiGetString(TextNo1);
- VarsUi.FBPointer = 0;
- if (TextNo2)
- {
- VarsUi.FBState = 5;
- }
- else
- {
- VarsUi.FBState++;
- }
- }
- }
- break;
-
- case 4 : // Show text string
- {
- if ((VarsUi.FBText[VarsUi.FBPointer]) && (VarsUi.FBPointer < NO_OF_FEEDBACK_CHARS))
- {
- pMapDisplay->pFunc(DISPLAY_CHAR,TRUE,24 + VarsUi.FBPointer * 6,16,VarsUi.FBText[VarsUi.FBPointer],0);
- VarsUi.FBPointer++;
- }
- else
- {
- VarsUi.FBTimer = 0;
- VarsUi.FBState = 7;
- }
- }
- break;
-
- case 5 : // Show text string
- {
- if ((VarsUi.FBText[VarsUi.FBPointer]) && (VarsUi.FBPointer < NO_OF_FEEDBACK_CHARS))
- {
- pMapDisplay->pFunc(DISPLAY_CHAR,TRUE,24 + VarsUi.FBPointer * 6,12,VarsUi.FBText[VarsUi.FBPointer],0);
- VarsUi.FBPointer++;
- }
- else
- {
- if (TextNo2 == 0xFF)
- {
- VarsUi.FBText = VarsUi.SelectedFilename;
- }
- else
- {
- VarsUi.FBText = cUiGetString(TextNo2);
- }
- VarsUi.FBPointer = 0;
- VarsUi.FBState++;
- }
- }
- break;
-
- case 6 : // Show text string
- {
- if ((VarsUi.FBText[VarsUi.FBPointer]) && (VarsUi.FBPointer < NO_OF_FEEDBACK_CHARS))
- {
- pMapDisplay->pFunc(DISPLAY_CHAR,TRUE,24 + VarsUi.FBPointer * 6,20,VarsUi.FBText[VarsUi.FBPointer],0);
- VarsUi.FBPointer++;
- }
- else
- {
- VarsUi.FBTimer = 0;
- VarsUi.FBState++;
- }
- }
- break;
-
- case 7 : // Wait if time provided
- {
- if (++VarsUi.FBTimer >= (Time + 100))
- {
- VarsUi.FBState++;
- }
- }
- break;
-
- default : // Exit
- {
- VarsUi.FBState = 0;
- }
- break;
-
- }
- }
-
- return (VarsUi.FBState);
-}
-
-
-
-//******* cUiFileList ********************************************************
-
-UBYTE cUiFindNoOfFiles(UBYTE FileType,UBYTE *NoOfFiles)
-{
- switch (VarsUi.FNOFState)
- {
- case 0 :
- {
- *NoOfFiles = 0;
-
- if (FileType >= FILETYPES)
- {
- FileType = FILETYPE_ALL;
- }
- sprintf((char*)VarsUi.FNOFSearchBuffer,"*.%s",TXT_FILE_EXT[FileType]);
-
- VarsUi.FNOFHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FNOFSearchBuffer,VarsUi.FNOFNameBuffer,&VarsUi.FNOFLength);
- if (!(VarsUi.FNOFHandle & 0x8000))
- {
- *NoOfFiles = 1;
- VarsUi.FNOFState++;
- }
- }
- break;
-
- case 1 :
- {
- VarsUi.FNOFHandle = pMapLoader->pFunc(FINDNEXT,(UBYTE*)&VarsUi.FNOFHandle,VarsUi.FNOFNameBuffer,&VarsUi.FNOFLength);
- if (!(VarsUi.FNOFHandle & 0x8000))
- {
- *NoOfFiles += 1;
- }
- else
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
- VarsUi.FNOFState = 0;
- }
- }
- break;
-
- }
-
- return (VarsUi.FNOFState);
-}
-
-
-UBYTE cUiFindNameForFileNo(UBYTE FileType,UBYTE FileNo,UBYTE *Name)
-{
- switch (VarsUi.FNOFState)
- {
- case 0 :
- {
- Name[0] = 0;
-
- if (FileNo)
- {
- if (FileType >= FILETYPES)
- {
- FileType = FILETYPE_ALL;
- }
- sprintf((char*)VarsUi.FNOFSearchBuffer,"*.%s",TXT_FILE_EXT[FileType]);
-
- VarsUi.FNOFHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FNOFSearchBuffer,Name,&VarsUi.FNOFLength);
- if (!(VarsUi.FNOFHandle & 0x8000))
- {
- if (FileNo != 1)
- {
- VarsUi.FNOFFileNo = 1;
- VarsUi.FNOFState++;
- }
- else
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
- }
- }
- }
- }
- break;
-
- case 1 :
- {
- VarsUi.FNOFHandle = pMapLoader->pFunc(FINDNEXT,(UBYTE*)&VarsUi.FNOFHandle,Name,&VarsUi.FNOFLength);
- if (!(VarsUi.FNOFHandle & 0x8000))
- {
- VarsUi.FNOFFileNo++;
- if (FileNo == VarsUi.FNOFFileNo)
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
- VarsUi.FNOFState = 0;
- }
- }
- else
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
- VarsUi.FNOFState = 0;
- }
- }
- break;
-
- }
-
- return (VarsUi.FNOFState);
-}
-
-
-UBYTE cUiFileList(UBYTE Action) // Show files and select
-{
- switch (Action)
- {
- case MENU_INIT :
- {
- if (!VarsUi.State)
- {
- VarsUi.FileCenter = 1;
- VarsUi.NextState = IOMapUi.State;
- }
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_LEFT :
- {
- if (!VarsUi.State)
- {
- cUiListLeft(VarsUi.NoOfFiles,&VarsUi.FileCenter);
- VarsUi.NextState = TEST_BUTTONS;
- }
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_RIGHT :
- {
- if (!VarsUi.State)
- {
- cUiListRight(VarsUi.NoOfFiles,&VarsUi.FileCenter);
- VarsUi.NextState = TEST_BUTTONS;
- }
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_SELECT :
- {
- }
- break;
-
- default :
- {
- if (Action < FILETYPES)
- {
- if (!VarsUi.State)
- {
- VarsUi.FileType = Action;
- VarsUi.FileCenter = 1;
- VarsUi.NextState = IOMapUi.State;
- }
- Action = MENU_DRAW;
- }
- else
- {
- IOMapUi.State = EXIT_PRESSED;
- VarsUi.State = 0;
- }
- }
- break;
-
- }
-
- if (Action == MENU_DRAW)
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.FNOFState = 0;
- VarsUi.State++;
- }
- break;
-
- case 1 :
- {
- if (cUiFindNoOfFiles(VarsUi.FileType,&VarsUi.NoOfFiles) == 0)
- {
- if (VarsUi.NoOfFiles)
- {
- cUiListCalc(VarsUi.NoOfFiles,&VarsUi.FileCenter,&VarsUi.FileLeft,&VarsUi.FileRight);
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 0;
- IOMapUi.State = EXIT_PRESSED;
- }
- }
- }
- break;
-
- case 2 :
- {
- if (cUiFindNameForFileNo(VarsUi.FileType,VarsUi.FileCenter,VarsUi.SelectedFilename) == 0)
- {
- VarsUi.State++;
- }
- }
- break;
-
- default :
- {
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = NULL;
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = NULL;
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = NULL;
-
- if (VarsUi.FileLeft)
- {
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = (UBYTE*)&Icons->Data[(VarsUi.FileType + ALLFILES) * Icons->ItemPixelsX * (Icons->ItemPixelsY / 8)];
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_LEFT);
- }
- if (VarsUi.FileCenter)
- {
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Icons->Data[(VarsUi.FileType + ALLFILES) * Icons->ItemPixelsX * (Icons->ItemPixelsY / 8)];
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_CENTER);
- }
- if (VarsUi.FileRight)
- {
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = (UBYTE*)&Icons->Data[(VarsUi.FileType + ALLFILES) * Icons->ItemPixelsX * (Icons->ItemPixelsY / 8)];
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_RIGHT);
- }
-
- pMapDisplay->EraseMask |= TEXTLINE_BIT(TEXTLINE_5);
-
- // Search forward for termination
- VarsUi.Tmp = 0;
- while ((VarsUi.SelectedFilename[VarsUi.Tmp]) && (VarsUi.Tmp < FILENAME_LENGTH))
- {
- VarsUi.Tmp++;
- }
-
- // Search backward for "."
- while ((VarsUi.Tmp) && (VarsUi.SelectedFilename[VarsUi.Tmp] != '.'))
- {
- VarsUi.Tmp--;
- }
-
- if (VarsUi.Tmp > DISPLAYLINE_LENGTH)
- {
- VarsUi.Tmp = DISPLAYLINE_LENGTH;
- }
-
- VarsUi.DisplayBuffer[VarsUi.Tmp] = 0;
-
- // Copy only name not ext
- while (VarsUi.Tmp)
- {
- VarsUi.Tmp--;
- VarsUi.DisplayBuffer[VarsUi.Tmp] = VarsUi.SelectedFilename[VarsUi.Tmp];
- }
-
- pMapDisplay->pMenuText = VarsUi.DisplayBuffer;
- pMapDisplay->EraseMask |= MENUICON_BITS;
- pMapDisplay->UpdateMask |= (SPECIAL_BIT(FRAME_SELECT) | SPECIAL_BIT(MENUTEXT));
-
- IOMapUi.State = VarsUi.NextState;
- VarsUi.State = 0;
- }
- break;
-
- }
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiVolume **********************************************************
-
-UBYTE cUiVolume(UBYTE Action) // MENU_INIT,MENU_LEFT,MENU_RIGHT,MENU_EXIT
-{
- switch (Action)
- {
- case MENU_INIT : // Init time counter and cursor bitmap
- {
- VarsUi.Counter = VarsUi.NVData.VolumeStep + 1;
-
- VarsUi.pTmp = (UBYTE*)Cursor;
- for (VarsUi.Tmp = 0;(VarsUi.Tmp < SIZE_OF_CURSOR) && (VarsUi.Tmp < (UBYTE)SIZEOF_DATA(Cursor));VarsUi.Tmp++)
- {
- VarsUi.CursorTmp[VarsUi.Tmp] = *VarsUi.pTmp;
- VarsUi.pTmp++;
- }
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_LEFT : // Dec
- {
- cUiListLeft(MAX_VOLUME + 1,&VarsUi.Counter);
- IOMapUi.Volume = VarsUi.Counter - 1;
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_RIGHT : // Inc
- {
- cUiListRight(MAX_VOLUME + 1,&VarsUi.Counter);
- IOMapUi.Volume = VarsUi.Counter - 1;
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_ENTER : // Enter
- {
- VarsUi.NVData.VolumeStep = VarsUi.Counter - 1;
- cUiNVWrite();
- IOMapUi.Volume = VarsUi.NVData.VolumeStep;
- pMapSound->Volume = IOMapUi.Volume;
- Action = MENU_EXIT;
- }
- break;
-
- case MENU_EXIT : // Leave
- {
- IOMapUi.Volume = VarsUi.NVData.VolumeStep;
- }
- break;
-
- }
- if (Action == MENU_DRAW)
- {
- sprintf((char*)VarsUi.DisplayBuffer,"%u",(UWORD)VarsUi.Counter - 1);
- pMapDisplay->pTextLines[TEXTLINE_3] = VarsUi.DisplayBuffer;
-
- pMapDisplay->pBitmaps[BITMAP_1] = (BMPMAP*)VarsUi.CursorTmp;
- VarsUi.CursorTmp[4] = 46;
- VarsUi.CursorTmp[5] = 24;
- pMapDisplay->EraseMask |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4));
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= (TEXTLINE_BIT(TEXTLINE_3) | BITMAP_BIT(BITMAP_1));
- }
- if (Action == MENU_EXIT)
- {
- IOMapUi.State = EXIT_PRESSED;
- }
-
- return (0);
-}
-
-
-
-//******* cUiGetUserString ***************************************************
-
-#define STRINGTYPES 2
-
-#define TOPTEXT_LINE TEXTLINE_3
-#define STRING_LINE TEXTLINE_5
-
-typedef struct
-{
- const UBYTE Text;
- const UBYTE *Figures;
- const UBYTE NoOfFigures;
- const UBYTE MaxStringLength;
- const UBYTE WindowSize;
- const SBYTE DefaultPointer;
-}
-STRSETS;
-
-const UBYTE Figures[] = { "0987654321" "\x7F" "abcdefghijklmnopqrstuvwxyz " };
-
-const STRSETS StrSets[STRINGTYPES] =
-{
- { TXT_GETUSERSTRING_PIN, Figures, 37, SIZE_OF_BT_PINCODE - 1, 15, 10 },
- { TXT_GETUSERSTRING_FILENAME, Figures, 37, FILENAME_LENGTH - 4 , 15, 10 }
-};
-
-
-UBYTE cUiGetUserString(UBYTE Type) // 0=Pincode, 1=filename
-{
- UBYTE Tmp1;
- SBYTE Tmp2;
-
- if (Type < STRINGTYPES)
- {
- switch (VarsUi.GUSState)
- {
- case 0 : // Init screen
- {
- // Disable update and prepare screen
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_LARGE);
- pMapDisplay->pBitmaps[BITMAP_1] = (BMPMAP*)Ok;
-
- // Set figure pointer to default
- VarsUi.FigurePointer = (SBYTE)StrSets[Type].DefaultPointer;
-
- // Calculate cursor from default string
- VarsUi.GUSCursor = 0;
- while ((VarsUi.GUSCursor < DISPLAYLINE_LENGTH) && VarsUi.UserString[VarsUi.GUSCursor])
- {
- VarsUi.GUSCursor++;
- }
- VarsUi.GUSNoname = TRUE;
-
- VarsUi.GUSState++;
- }
- break;
-
- case 1 : // Update user string
- {
- if (!(pMapDisplay->EraseMask & SCREEN_BIT(SCREEN_LARGE)))
- {
- // Display top text
- pMapDisplay->pTextLines[TOPTEXT_LINE] = cUiGetString(StrSets[Type].Text);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TOPTEXT_LINE);
-
- Tmp1 = 0;
- while (VarsUi.UserString[Tmp1] && (Tmp1 < StrSets[Type].MaxStringLength))
- {
- VarsUi.DisplayText[Tmp1] = VarsUi.UserString[Tmp1];
- Tmp1++;
- }
- if (Tmp1 < StrSets[Type].MaxStringLength)
- {
- VarsUi.DisplayText[Tmp1] = '_';
- Tmp1++;
- }
- while (Tmp1 < StrSets[Type].MaxStringLength)
- {
- VarsUi.DisplayText[Tmp1] = ' ';
- Tmp1++;
- }
- VarsUi.DisplayText[Tmp1] = 0;
-
- pMapDisplay->pTextLines[STRING_LINE] = VarsUi.DisplayText;
- pMapDisplay->UpdateMask |= (TEXTLINE_BIT(STRING_LINE) | SPECIAL_BIT(TOPLINE));
- pMapDisplay->EraseMask |= BITMAP_BIT(BITMAP_1);
- VarsUi.GUSState++;
- }
- }
- break;
-
- case 2 : // Update figure string
- {
- if (!(pMapDisplay->EraseMask & BITMAP_BIT(BITMAP_1)))
- {
- Tmp2 = VarsUi.FigurePointer;
-
- for (Tmp1 = 0;Tmp1 < 3;Tmp1++)
- {
- if (Tmp2)
- {
- Tmp2--;
- }
- else
- {
- Tmp2 = StrSets[Type].NoOfFigures - 1;
- }
- }
- for (Tmp1 = 0;Tmp1 < 7;Tmp1++)
- {
- if ((Tmp1 == 3) && (StrSets[Type].Figures[Tmp2] == 0x7F))
- {
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_1);
- }
- else
- {
- pMapDisplay->pFunc(DISPLAY_CHAR,TRUE,5 + Tmp1 * 14,52,StrSets[Type].Figures[Tmp2],0);
- }
- if (Tmp2 < (StrSets[Type].NoOfFigures - 1))
- {
- Tmp2++;
- }
- else
- {
- Tmp2 = 0;
- }
- }
- pMapDisplay->pFunc(DISPLAY_HORISONTAL_LINE,TRUE,42,47,57,0);
- pMapDisplay->pFunc(DISPLAY_VERTICAL_LINE,TRUE,42,47,0,63);
- pMapDisplay->pFunc(DISPLAY_VERTICAL_LINE,TRUE,57,47,0,63);
-
- VarsUi.GUSState++;
- }
- }
- break;
-
- case 3 : // Get user input
- {
- if ((pMapButton->State[BTN4] & LONG_PRESSED_EV))
- {
- if (VarsUi.GUSCursor)
- {
- if ((VarsUi.UserString[VarsUi.GUSCursor - 1] >= 'a') && (VarsUi.UserString[VarsUi.GUSCursor - 1] <= 'z'))
- {
- VarsUi.UserString[VarsUi.GUSCursor - 1] -= ' ';
- VarsUi.GUSState -= 2;
- }
- }
- }
-
- switch (cUiReadButtons())
- {
- case BUTTON_LEFT :
- {
- if (VarsUi.FigurePointer)
- {
- VarsUi.FigurePointer--;
- }
- else
- {
- VarsUi.FigurePointer = StrSets[Type].NoOfFigures - 1;
- }
- pMapDisplay->EraseMask |= BITMAP_BIT(BITMAP_1);
- VarsUi.GUSState -= 2;
- }
- break;
-
- case BUTTON_ENTER :
- {
- switch (StrSets[Type].Figures[VarsUi.FigurePointer])
- {
- case 0x7F :
- {
- VarsUi.GUSState = 100;
- }
- break;
-
- default :
- {
- VarsUi.GUSNoname = FALSE;
- if (VarsUi.GUSCursor < StrSets[Type].MaxStringLength)
- {
- VarsUi.UserString[VarsUi.GUSCursor] = StrSets[Type].Figures[VarsUi.FigurePointer];
- VarsUi.GUSCursor++;
- VarsUi.UserString[VarsUi.GUSCursor] = 0;
- VarsUi.GUSState -= 2;
- }
- }
- break;
-
- }
- }
- break;
-
- case BUTTON_RIGHT :
- {
- if (VarsUi.FigurePointer < (StrSets[Type].NoOfFigures - 1))
- {
- VarsUi.FigurePointer++;
- }
- else
- {
- VarsUi.FigurePointer = 0;
- }
- pMapDisplay->EraseMask |= BITMAP_BIT(BITMAP_1);
- VarsUi.GUSState -= 2;
- }
- break;
-
- case BUTTON_EXIT :
- {
- if (VarsUi.GUSCursor)
- {
- if (VarsUi.GUSNoname == TRUE)
- {
- VarsUi.GUSNoname = FALSE;
- while (VarsUi.GUSCursor)
- {
- VarsUi.UserString[VarsUi.GUSCursor] = 0;
- VarsUi.GUSCursor--;
- }
- }
- else
- {
- VarsUi.GUSCursor--;
- }
- VarsUi.UserString[VarsUi.GUSCursor] = 0;
- VarsUi.GUSState -= 2;
- }
- else
- {
- VarsUi.UserString[0] = 0;
- VarsUi.GUSState = 100;
- }
- }
- break;
-
- }
- }
- break;
-
- default : // Clean up screen
- {
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_BACKGROUND);
- pMapDisplay->UpdateMask = 0;
- IOMapUi.Flags |= UI_REDRAW_STATUS;
- VarsUi.GUSState = 0;
- }
- break;
- }
- }
-
- return (VarsUi.GUSState);
-}
-
-
-
-//******* cUiDataLogging *****************************************************
-
-void cUiDrawPortNo(UBYTE *Bitmap,UBYTE MenuIconNo,UBYTE PortNo)
-{
- UBYTE Tmp;
-
- Bitmap[0] = (UBYTE)(FILEFORMAT_BITMAP >> 8);
- Bitmap[1] = (UBYTE)(FILEFORMAT_BITMAP);
- Bitmap[2] = (UBYTE)(SIZE_OF_PORTBITMAP >> 8);
- Bitmap[3] = (UBYTE)(SIZE_OF_PORTBITMAP);
- Bitmap[4] = DISPLAY_MENUICONS_X_OFFS + DISPLAY_MENUICONS_X_DIFF * MenuIconNo + 2;
- Bitmap[5] = DISPLAY_MENUICONS_Y;
- Bitmap[6] = Port[0].ItemPixelsX;
- Bitmap[7] = Port[0].ItemPixelsY;
-
- Tmp = 0;
- while (Tmp < Bitmap[6])
- {
- Bitmap[Tmp + FILEHEADER_LENGTH] = Port[0].Data[Tmp + PortNo * Bitmap[6]];
- Tmp++;
- }
-
-}
-
-UBYTE cUiDataLogging(UBYTE Action)
-{
- SBYTE TmpBuffer[DATALOGBUFFERSIZE + 1];
-
- switch (Action)
- {
- case MENU_INIT : // Initialize all ports to empty
- {
-// Show select
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_VIEW_SELECT);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_SMALL);
-
-// Init ports
- for (VarsUi.Tmp = 0;VarsUi.Tmp < DATALOGPORTS;VarsUi.Tmp++)
- {
- VarsUi.DatalogPort[VarsUi.Tmp] = MENU_SENSOR_EMPTY;
- }
- }
- break;
-
- case MENU_EXIT : // Initialize all ports to empty
- {
-// Show select
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_VIEW_SELECT);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_SMALL);
- }
- break;
-
- case MENU_TEXT : // Write text
- {
-// Init selected sensor and port to none
- VarsUi.SelectedSensor = MENU_SENSOR_EMPTY;
- VarsUi.SelectedPort = MENU_PORT_EMPTY;
-// Count ports
- VarsUi.Counter = 0;
- for (VarsUi.Tmp = 0;VarsUi.Tmp < DATALOGPORTS;VarsUi.Tmp++)
- {
- if (MENU_SENSOR_EMPTY != VarsUi.DatalogPort[VarsUi.Tmp])
- {
-// Find default port to view
- if (VarsUi.SelectedPort == MENU_PORT_EMPTY)
- {
- VarsUi.SelectedPort = VarsUi.Tmp + MENU_PORT_1;
- }
- VarsUi.Counter++;
- }
- }
- if (VarsUi.Counter)
- {
-// Display text
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_DATALOGGING_PRESS_EXIT_TO);
- pMapDisplay->pTextLines[TEXTLINE_4] = cUiGetString(TXT_DATALOGGING_STOP_DATALOGGING);
-
- pMapDisplay->TextLinesCenterFlags |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4));
- pMapDisplay->UpdateMask |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4));
- }
- else
- {
- cUiMenuPrevFile();
- IOMapUi.State = NEXT_MENU;
- VarsUi.State = 0;
- }
- }
- break;
-
- case MENU_RUN : // Run data logging
- {
- switch (VarsUi.State)
- {
- case 0 : // Init log
- {
-// Save menu text
- VarsUi.MenuIconTextSave = pMapDisplay->pMenuText;
-
-// Delete file if exist
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_DATALOG_FILENAME,(char*)TXT_FILE_EXT[FILETYPE_DATALOG]);
- VarsUi.TmpHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FilenameBuffer,VarsUi.SearchFilenameBuffer,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- pMapLoader->pFunc(DELETE,VarsUi.FilenameBuffer,NULL,NULL);
- }
-
-// Open file
- VarsUi.TmpLength = pMapLoader->FreeUserFlash;
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_DATALOG_FILENAME,(char*)TXT_FILE_EXT[FILETYPE_DATALOG]);
- VarsUi.TmpHandle = pMapLoader->pFunc(OPENWRITEDATA,VarsUi.FilenameBuffer,NULL,&VarsUi.TmpLength);
- VarsUi.DatalogError = VarsUi.TmpHandle;
- if (!(VarsUi.DatalogError & 0x8000))
- {
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"%s\t%lu",SENSORSYNCDATA,pMapCmd->SyncTime);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
-
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\t%lu",pMapCmd->SyncTick);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
-
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\t%lu",pMapCmd->Tick);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
-
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\t%lu\t-1\r\n",DATALOG_DEFAULT_SAMPLE_TIME);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
-
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"%s",SENSORSDATA);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- for (VarsUi.Tmp = 0;(VarsUi.Tmp < DATALOGPORTS) && (!(VarsUi.DatalogError & 0x8000));VarsUi.Tmp++)
- {
- if (MENU_SENSOR_EMPTY != VarsUi.DatalogPort[VarsUi.Tmp])
- {
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\t%u_%s%s",(UWORD)(VarsUi.Tmp + 1),(char*)SENSORDIRNAME[(VarsUi.DatalogPort[VarsUi.Tmp] - MENU_SENSOR_EMPTY) - 1],(char*)SENSORUNITNAME[(VarsUi.DatalogPort[VarsUi.Tmp] - MENU_SENSOR_EMPTY) - 1]);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- }
- }
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\r\n");
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"%s",SENSORTIME);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- for (VarsUi.Tmp = 0;(VarsUi.Tmp < DATALOGPORTS) && (!(VarsUi.DatalogError & 0x8000));VarsUi.Tmp++)
- {
- if (MENU_SENSOR_EMPTY != VarsUi.DatalogPort[VarsUi.Tmp])
- {
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\t%s",(char*)SENSORDIRNAME[(VarsUi.DatalogPort[VarsUi.Tmp] - MENU_SENSOR_EMPTY) - 1]);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- }
- }
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\r\n");
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- if (!(VarsUi.DatalogError & 0x8000))
- {
- VarsUi.DatalogTimer = 0;
- VarsUi.DatalogSampleTime = DATALOG_DEFAULT_SAMPLE_TIME;
- VarsUi.DatalogSampleTimer = 0;
- VarsUi.Timer = 0;
- VarsUi.Update = TRUE;
- IOMapUi.Flags |= UI_BUSY;
- VarsUi.DatalogOldTick = pMapCmd->Tick;
- VarsUi.SensorReset = TRUE;
- VarsUi.State++;
- }
- else
- {
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_SMALL);
- pMapDisplay->pBitmaps[BITMAP_1] = NULL;
- VarsUi.State = 4;
- }
- }
- else
- {
-// File error
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_SMALL);
- pMapDisplay->pBitmaps[BITMAP_1] = NULL;
- VarsUi.State = 3;
- }
- }
- break;
-
- case 1 :
- {
-// Get real time since last
- VarsUi.DatalogRTC = (pMapCmd->Tick - VarsUi.DatalogOldTick);
- VarsUi.DatalogOldTick = pMapCmd->Tick;
-// Update all timers
- VarsUi.DatalogTimer += VarsUi.DatalogRTC;
- VarsUi.DatalogSampleTimer += VarsUi.DatalogRTC;
- VarsUi.ReadoutTimer += VarsUi.DatalogRTC;
-// Update sensor values
- cUiUpdateSensor((SWORD)VarsUi.DatalogRTC);
-// Check for select change
- if (VarsUi.Update == TRUE)
- {
- VarsUi.Update = FALSE;
- VarsUi.SelectedSensor = VarsUi.DatalogPort[VarsUi.SelectedPort - MENU_PORT_1];
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = cUiMenuGetIconImage(cUiMenuSearchSensorIcon(VarsUi.SelectedSensor));
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = NULL;
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = NULL;
-
- pMapDisplay->EraseMask = SCREEN_BIT(SCREEN_LARGE);
- pMapDisplay->pBitmaps[BITMAP_1] = (BMPMAP*)Display;
- pMapDisplay->UpdateMask = (BITMAP_BIT(BITMAP_1) | MENUICON_BITS | SPECIAL_BIT(TOPLINE) | SPECIAL_BIT(FRAME_SELECT));
-
- pMapDisplay->pBitmaps[BITMAP_2] = (BMPMAP*)VarsUi.PortBitmapLeft;
- pMapDisplay->pBitmaps[BITMAP_3] = (BMPMAP*)VarsUi.PortBitmapCenter;
- pMapDisplay->pBitmaps[BITMAP_4] = (BMPMAP*)VarsUi.PortBitmapRight;
-
- cUiDrawPortNo(VarsUi.PortBitmapCenter,MENUICON_CENTER,VarsUi.SelectedPort - MENU_PORT_EMPTY);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_3);
-
-
-
- if (VarsUi.Counter == 2)
- {
- VarsUi.Tmp = VarsUi.SelectedPort;
- do
- {
- VarsUi.Tmp++;
- if (VarsUi.Tmp >= MENU_PORT_INVALID)
- {
- VarsUi.Tmp = MENU_PORT_1;
- }
- }
- while (VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1] == MENU_SENSOR_EMPTY);
- if (VarsUi.Tmp > VarsUi.SelectedPort)
- {
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = cUiMenuGetIconImage(cUiMenuSearchSensorIcon(VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1]));
- cUiDrawPortNo(VarsUi.PortBitmapRight,MENUICON_RIGHT,VarsUi.Tmp - MENU_PORT_EMPTY);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_4);
- }
- else
- {
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = cUiMenuGetIconImage(cUiMenuSearchSensorIcon(VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1]));
- cUiDrawPortNo(VarsUi.PortBitmapLeft,MENUICON_LEFT,VarsUi.Tmp - MENU_PORT_EMPTY);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_2);
- }
- }
- if (VarsUi.Counter > 2)
- {
- VarsUi.Tmp = VarsUi.SelectedPort;
- do
- {
- VarsUi.Tmp++;
- if (VarsUi.Tmp >= MENU_PORT_INVALID)
- {
- VarsUi.Tmp = MENU_PORT_1;
- }
- }
- while (VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1] == MENU_SENSOR_EMPTY);
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = cUiMenuGetIconImage(cUiMenuSearchSensorIcon(VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1]));
- cUiDrawPortNo(VarsUi.PortBitmapRight,MENUICON_RIGHT,VarsUi.Tmp - MENU_PORT_EMPTY);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_4);
-
- VarsUi.Tmp = VarsUi.SelectedPort;
- do
- {
- VarsUi.Tmp--;
- if (VarsUi.Tmp <= MENU_PORT_EMPTY)
- {
- VarsUi.Tmp = MENU_PORT_INVALID - 1;
- }
- }
- while (VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1] == MENU_SENSOR_EMPTY);
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = cUiMenuGetIconImage(cUiMenuSearchSensorIcon(VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1]));
- cUiDrawPortNo(VarsUi.PortBitmapLeft,MENUICON_LEFT,VarsUi.Tmp - MENU_PORT_EMPTY);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_2);
-
-
- }
- VarsUi.ReadoutTimer = DISPLAY_VIEW_UPDATE;
- }
-// Write sample if timeout
- if (VarsUi.DatalogSampleTimer >= VarsUi.DatalogSampleTime)
- {
- VarsUi.DatalogSampleTimer -= VarsUi.DatalogSampleTime;
-
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"%lu",VarsUi.DatalogTimer - VarsUi.DatalogSampleTime);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- for (VarsUi.Tmp = 0;(VarsUi.Tmp < DATALOGPORTS) && (!(VarsUi.DatalogError & 0x8000));VarsUi.Tmp++)
- {
- if (MENU_SENSOR_EMPTY != VarsUi.DatalogPort[VarsUi.Tmp])
- {
- if (VarsUi.DatalogSampleValid[VarsUi.Tmp] == TRUE)
- {
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,(char*)SENSORFORMAT2[(VarsUi.DatalogPort[VarsUi.Tmp] - MENU_SENSOR_EMPTY) - 1],(float)VarsUi.DatalogSampleValue[VarsUi.Tmp] / SENSORDIVIDER[VarsUi.DatalogPort[VarsUi.Tmp] - MENU_SENSOR_EMPTY]);
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- }
- else
- {
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\t-");
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- }
- }
- }
- VarsUi.TmpLength = (ULONG)sprintf((char*)TmpBuffer,"\r\n");
- VarsUi.DatalogError |= pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)TmpBuffer,&VarsUi.TmpLength);
- }
-// Refresh display
- if (++VarsUi.ReadoutTimer >= DISPLAY_VIEW_UPDATE)
- {
- VarsUi.ReadoutTimer = 0;
-
-// Display sensor value
- cUiPrintSensorInDisplayBuffer(VarsUi.SelectedPort);
- pMapDisplay->pTextLines[TEXTLINE_4] = VarsUi.DisplayBuffer;
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_4);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_4);
- }
-
-// Test for file error
- if ((VarsUi.DatalogError & 0x8000))
- {
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_SMALL);
- pMapDisplay->pBitmaps[BITMAP_1] = NULL;
- VarsUi.State = 4;
- }
-
-// Test for break;
- switch (cUiReadButtons())
- {
- case BUTTON_EXIT :
- {
- VarsUi.State++;
- }
- break;
-
- case BUTTON_LEFT :
- {
- VarsUi.Tmp = VarsUi.SelectedPort;
- do
- {
- VarsUi.Tmp--;
- if (VarsUi.Tmp <= MENU_PORT_EMPTY)
- {
- VarsUi.Tmp = MENU_PORT_INVALID - 1;
- }
- }
- while (VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1] == MENU_SENSOR_EMPTY);
- if ((VarsUi.Counter > 2) || (VarsUi.Tmp < VarsUi.SelectedPort))
- {
- VarsUi.SelectedPort = VarsUi.Tmp;
- }
- VarsUi.Update = TRUE;
- }
- break;
-
- case BUTTON_RIGHT :
- {
- VarsUi.Tmp = VarsUi.SelectedPort;
- do
- {
- VarsUi.Tmp++;
- if (VarsUi.Tmp >= MENU_PORT_INVALID)
- {
- VarsUi.Tmp = MENU_PORT_1;
- }
- }
- while (VarsUi.DatalogPort[VarsUi.Tmp - MENU_PORT_1] == MENU_SENSOR_EMPTY);
- if ((VarsUi.Counter > 2) || (VarsUi.Tmp > VarsUi.SelectedPort))
- {
- VarsUi.SelectedPort = VarsUi.Tmp;
- }
- VarsUi.Update = TRUE;
- }
- break;
-
- }
- IOMapUi.Flags |= UI_RESET_SLEEP_TIMER;
- }
- break;
-
- case 2 :
- {
-// Close file
- pMapLoader->pFunc(CROPDATAFILE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
-
-// Clean up
- pMapDisplay->pMenuText = VarsUi.MenuIconTextSave;
- cUiReleaseSensors();
-
- IOMapUi.Flags &= ~UI_BUSY;
- IOMapUi.State = RIGHT_PRESSED;
- VarsUi.State = 0;
- }
- break;
-
- case 3 : // Display memory full text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_DL_ERROR_MEMORY_FULL_1,TXT_FB_DL_ERROR_MEMORY_FULL_2,DISPLAY_SHOW_ERROR_TIME))
- {
- cUiMenuPrevFile();
- IOMapUi.State = NEXT_MENU;
- VarsUi.State = 0;
- }
- }
- break;
-
- case 4 : // Display memory full text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_DL_ERROR_MEMORY_FULL_1,TXT_FB_DL_ERROR_MEMORY_FULL_2,DISPLAY_SHOW_ERROR_TIME))
- {
- VarsUi.State = 2;
- }
- }
- break;
-
- }
- }
- break;
-
- case MENU_SAVE : // Save datalog file
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.NVData.DatalogNumber++;
- if (VarsUi.NVData.DatalogNumber > MAX_DATALOGS)
- {
- VarsUi.NVData.DatalogNumber = 1;
- }
- cUiNVWrite();
- sprintf((char*)VarsUi.SelectedFilename,"%s%u.%s",(char*)UI_DATALOG_FILENAME,VarsUi.NVData.DatalogNumber,TXT_FILE_EXT[FILETYPE_DATALOG]);
- VarsUi.State++;
- }
- break;
-
- case 1 :
- {
-// Rename TEMP_DATALOG_FILENAME to VarsUi.SelectedFilename(user filename)
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_DATALOG_FILENAME,(char*)TXT_FILE_EXT[FILETYPE_DATALOG]);
- VarsUi.TmpHandle = pMapLoader->pFunc(RENAMEFILE,VarsUi.FilenameBuffer,VarsUi.SelectedFilename,&VarsUi.TmpLength);
- VarsUi.State++;
- }
- break;
-
- case 2 : // Display saved text
- {
- if (!cUiFeedback((BMPMAP*)Info,TXT_FB_DL_FILE_SAVED_INFO,0xFF,DISPLAY_SHOW_FILENAME_TIME))
- {
- VarsUi.State++;
- }
- }
- break;
-
- default :
- {
- cUiMenuPrevFile();
- IOMapUi.State = NEXT_MENU;
- VarsUi.State = 0;
- }
- break;
-
- }
- }
- break;
-
- case MENU_DELETE : // Delete datalog file
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
-// Delete file if exist
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_DATALOG_FILENAME,(char*)TXT_FILE_EXT[FILETYPE_DATALOG]);
- pMapLoader->pFunc(DELETE,VarsUi.FilenameBuffer,NULL,NULL);
- VarsUi.State++;
- }
- break;
-
- case 1 :
- {
- pMapDisplay->EraseMask |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4) | TEXTLINE_BIT(TEXTLINE_5) | MENUICON_BITS | SPECIAL_BIT(MENUTEXT));
- VarsUi.Timer = DISPLAY_SHOW_TIME;
- VarsUi.State++;
- }
- break;
-
- case 2 :
- {
- if (++VarsUi.Timer >= DISPLAY_SHOW_TIME)
- {
- pMapDisplay->EraseMask |= TEXTLINE_BIT(TEXTLINE_3);
- VarsUi.State++;
- }
- }
- break;
-
- default :
- {
- VarsUi.State = 0;
- }
- break;
-
- }
- }
- break;
-
- case MENU_SELECT : // Save sensor
- {
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_VIEW_SELECT);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
-
- VarsUi.DatalogPort[VarsUi.SelectedPort - MENU_PORT_1] = VarsUi.SelectedSensor;
- IOMapUi.State = EXIT_PRESSED;
- }
- break;
-
- default :
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- if ((Action > MENU_SENSOR_EMPTY) && (Action < MENU_SENSOR_INVALID))
- {
- VarsUi.SelectedSensor = Action;
- }
- if ((Action > MENU_PORT_EMPTY) && (Action < MENU_PORT_INVALID))
- {
- VarsUi.SelectedPort = Action;
- if (VarsUi.DatalogPort[VarsUi.SelectedPort - MENU_PORT_1] != MENU_SENSOR_EMPTY)
- {
-
- // Port occupied
- pMapDisplay->pTextLines[TEXTLINE_4] = cUiGetString(TXT_DATALOGGING_PORT_OCCUPIED);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_4);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_4);
- VarsUi.Timer = 0;
- VarsUi.State++;
- }
- }
- }
- break;
-
- default :
- {
- if ((++VarsUi.Timer >= DISPLAY_SHOW_TIME) || (BUTTON_NONE != cUiReadButtons()))
- {
- pMapDisplay->EraseMask |= TEXTLINE_BIT(TEXTLINE_4);
- cUiMenuPrev();
- IOMapUi.State = NEXT_MENU;
- VarsUi.State = 0;
- }
- }
- break;
-
- }
- }
- break;
-
- }
-
- return (VarsUi.State);
-}
-
-
-//******* cUiRunning **********************************************************
-
-void cUiRunning(UBYTE Action)
-{
- switch (Action)
- {
- case MENU_INIT :
- {
- VarsUi.RunIconSave = pMapDisplay->pMenuIcons[MENUICON_CENTER];
- VarsUi.RunBitmapPointer = 0;
- VarsUi.RunTimer = 0;
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_LARGE);
- pMapDisplay->UpdateMask |= SPECIAL_BIT(TOPLINE);
- }
- break;
-
- case MENU_RUN :
- {
- if ((IOMapUi.Flags & UI_ENABLE_STATUS_UPDATE))
- {
- if (++VarsUi.RunTimer >= RUN_BITMAP_CHANGE_TIME)
- {
- VarsUi.RunTimer = 0;
- if (++VarsUi.RunBitmapPointer >= Running->ItemsY )
- {
- VarsUi.RunBitmapPointer = 0;
- }
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Running->Data[VarsUi.RunBitmapPointer * Running->ItemPixelsX * (Running->ItemPixelsY / 8)];
- pMapDisplay->EraseMask |= MENUICON_BIT(MENUICON_CENTER);
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_CENTER);
- }
- }
- }
- break;
-
- case MENU_UPDATE :
- {
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Running->Data[VarsUi.RunBitmapPointer * Running->ItemPixelsX * (Running->ItemPixelsY / 8)];
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_CENTER);
- }
- break;
-
- case MENU_EXIT :
- {
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = VarsUi.RunIconSave;
- pMapDisplay->UpdateMask = MENUICON_BITS | SPECIAL_BIT(MENUTEXT);
- }
- break;
-
- }
-}
-
-//******* cUiOnBrickProgramming **********************************************
-
-UBYTE cUiOnBrickProgramming(UBYTE Action) // On brick programming
-{
- switch (Action)
- {
- case MENU_INIT : // Show motor / sensor text
- {
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_ONBRICKPROGRAMMING_PLEASE_USE_PORT);
- pMapDisplay->pTextLines[TEXTLINE_4] = cUiGetString(TXT_ONBRICKPROGRAMMING_1_TOUCH_SENSOR);
- pMapDisplay->pTextLines[TEXTLINE_5] = cUiGetString(TXT_ONBRICKPROGRAMMING_2_SOUND_SENSOR);
- pMapDisplay->pTextLines[TEXTLINE_6] = cUiGetString(TXT_ONBRICKPROGRAMMING_3_LIGHT_SENSOR);
- pMapDisplay->pTextLines[TEXTLINE_7] = cUiGetString(TXT_ONBRICKPROGRAMMING_4_ULTRA_SONIC);
- pMapDisplay->pTextLines[TEXTLINE_8] = cUiGetString(TXT_ONBRICKPROGRAMMING_BC_LR_MOTORS);
- pMapDisplay->EraseMask |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4) | TEXTLINE_BIT(TEXTLINE_5) | TEXTLINE_BIT(TEXTLINE_6) | TEXTLINE_BIT(TEXTLINE_7) | TEXTLINE_BIT(TEXTLINE_8));
- pMapDisplay->UpdateMask &= ~SPECIAL_BIT(FRAME_SELECT);
- pMapDisplay->UpdateMask |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4) | TEXTLINE_BIT(TEXTLINE_5) | TEXTLINE_BIT(TEXTLINE_6) | TEXTLINE_BIT(TEXTLINE_7) | TEXTLINE_BIT(TEXTLINE_8) | SPECIAL_BIT(TOPLINE));
- pMapDisplay->TextLinesCenterFlags |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4) | TEXTLINE_BIT(TEXTLINE_5) | TEXTLINE_BIT(TEXTLINE_6) | TEXTLINE_BIT(TEXTLINE_7) | TEXTLINE_BIT(TEXTLINE_8));
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_TEXT : // Show empty program steps
- {
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_LARGE);
-
- VarsUi.pTmp = (UBYTE*)Cursor;
- for (VarsUi.Tmp = 0;(VarsUi.Tmp < SIZE_OF_CURSOR) && (VarsUi.Tmp < (UBYTE)SIZEOF_DATA(Cursor));VarsUi.Tmp++)
- {
- VarsUi.CursorTmp[VarsUi.Tmp] = *VarsUi.pTmp;
- VarsUi.pTmp++;
- }
-
- for (VarsUi.ProgramStepPointer = 0;VarsUi.ProgramStepPointer < ON_BRICK_PROGRAMSTEPS;VarsUi.ProgramStepPointer++)
- {
- VarsUi.ProgramSteps[VarsUi.ProgramStepPointer] = MENU_ACTION_EMPTY;
- }
- VarsUi.ProgramStepPointer = 0;
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_EXIT : // Delete one steps and exit at the end
- {
- if (VarsUi.ProgramStepPointer)
- {
- if (VarsUi.ProgramStepPointer < ON_BRICK_PROGRAMSTEPS)
- {
- VarsUi.ProgramSteps[VarsUi.ProgramStepPointer] = MENU_ACTION_EMPTY;
- }
- VarsUi.ProgramStepPointer--;
- }
- else
- {
- IOMapUi.State = NEXT_MENU;
- }
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_RUN : // Run program steps until end or user press exit button
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.pTmp = (UBYTE*)Cursor;
- for (VarsUi.Tmp = 0;(VarsUi.Tmp < SIZE_OF_CURSOR) && (VarsUi.Tmp < (UBYTE)SIZEOF_DATA(Cursor));VarsUi.Tmp++)
- {
- VarsUi.CursorTmp[VarsUi.Tmp] = *VarsUi.pTmp;
- VarsUi.pTmp++;
- }
- pMapDisplay->pBitmaps[BITMAP_1] = (BMPMAP*)VarsUi.CursorTmp;
- cUiRunning(MENU_INIT);
- Action = MENU_DRAW;
- VarsUi.State++;
- }
- break;
-
- case 1 : // If sound finished -> Init text and program pointer
- {
- if (SOUND_IDLE == pMapSound->State)
- {
- VarsUi.ProgramStepPointer = ON_BRICK_PROGRAMSTEPS;
- VarsUi.MenuIconTextSave = pMapDisplay->pMenuText;
- pMapDisplay->EraseMask |= SPECIAL_BIT(MENUTEXT);
- VarsUi.State++;
- }
- }
- break;
-
- case 2 : // load file to run
- {
- if (PROG_IDLE == pMapCmd->ProgStatus)
- {
- sprintf((char*)pMapCmd->FileName,"%s.%s",(char*)VM_PROGRAM_READER,(char*)TXT_SYS_EXT);
- pMapCmd->ActivateFlag = TRUE;
- VarsUi.State++;
- }
- }
- break;
-
- case 3 : // Wait for end of file
- {
- if (PROG_RUNNING != pMapCmd->ProgStatus)
- {
- pMapCmd->ProgStatus = PROG_RESET;
- VarsUi.State = 99;
- VarsUi.ProgramStepPointer = ON_BRICK_PROGRAMSTEPS;
- }
- else
- {
- if (VarsUi.OBPTimer >= MIN_DISPLAY_UPDATE_TIME)
- {
- if (IOMapUi.OBPPointer != VarsUi.ProgramStepPointer)
- {
- VarsUi.ProgramStepPointer = IOMapUi.OBPPointer;
- Action = MENU_DRAW;
- }
- }
- }
- }
- break;
-
- default : // Program stopped
- {
- pMapDisplay->pMenuText = VarsUi.MenuIconTextSave;
- pMapDisplay->UpdateMask |= SPECIAL_BIT(MENUTEXT);
- Action = MENU_DRAW;
- VarsUi.State = 0;
- }
- break;
-
- }
- if (VarsUi.State)
- {
- cUiRunning(MENU_RUN);
- }
- else
- {
- cUiRunning(MENU_EXIT);
- }
- }
- break;
-
- case MENU_LEFT : // NA
- {
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_RIGHT : // NA
- {
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_UPDATE : // NA
- {
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_SAVE : // Save NXT program
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- // Suggest default filename to user
- strcpy((char*)VarsUi.UserString,(char*)DEFAULT_PROGRAM_NAME);
- VarsUi.State++;
- }
- break;
-
- case 1 :
- {
- if (!cUiGetUserString(1))
- {
- if (VarsUi.UserString[0])
- {
- sprintf((char*)VarsUi.SelectedFilename,"%s.%s",VarsUi.UserString,TXT_FILE_EXT[FILETYPE_NXT]);
-
- // If tmp file exist -> ask for overwrite
- VarsUi.TmpHandle = pMapLoader->pFunc(FINDFIRST,(UBYTE*)VarsUi.SelectedFilename,VarsUi.FilenameBuffer,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- VarsUi.State++;
- }
- else
- {
- VarsUi.State += 2;
- }
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- }
- break;
-
- case 2 :
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_OBP_FILE_EXIST_FAIL,TXT_FB_OBP_OVERWRITE_FAIL,0))
- {
- VarsUi.State = 0;
- }
- }
- break;
-
- case 3 :
- {
- // Rename TEMP_PROGRAM_FILENAME to VarsUi.SelectedFilename(user filename)
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_PROGRAM_FILENAME,(char*)TXT_TMP_EXT);
- VarsUi.TmpHandle = pMapLoader->pFunc(RENAMEFILE,VarsUi.FilenameBuffer,VarsUi.SelectedFilename,&VarsUi.TmpLength);
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- VarsUi.State++;
- }
- break;
-
- case 4 : // Display saved text
- {
- if (!cUiFeedback((BMPMAP*)Info,TXT_FB_OBP_FILE_SAVED_INFO,0,DISPLAY_SHOW_TIME))
- {
- VarsUi.State++;
- }
- }
- break;
-
- default :
- {
- cUiMenuPrevFile();
- IOMapUi.State = NEXT_MENU;
- VarsUi.State = 0;
- }
- break;
-
- }
- }
- break;
-
- case MENU_OVERWRITE : // Over write existing file
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- // Delete VarsUi.SelectedFilename(user filename)
- VarsUi.TmpHandle = pMapLoader->pFunc(FINDFIRST,(UBYTE*)VarsUi.SelectedFilename,VarsUi.FilenameBuffer,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- pMapLoader->pFunc(DELETE,VarsUi.SelectedFilename,NULL,NULL);
- }
-
- // Rename TEMP_PROGRAM_FILENAME to VarsUi.SelectedFilename(user filename)
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_PROGRAM_FILENAME,(char*)TXT_TMP_EXT);
- VarsUi.TmpHandle = pMapLoader->pFunc(RENAMEFILE,VarsUi.FilenameBuffer,VarsUi.SelectedFilename,&VarsUi.TmpLength);
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- VarsUi.State++;
- }
- break;
-
- default : // Display saved text
- {
- if (!cUiFeedback((BMPMAP*)Info,TXT_FB_OBP_FILE_SAVED_INFO,0,DISPLAY_SHOW_TIME))
- {
- VarsUi.State = 0;
- }
- }
- break;
-
- }
-
- }
- break;
-
- default : // Insert selected action/waitfor in program and save if finished
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.ProgramSteps[VarsUi.ProgramStepPointer] = Action;
- if (VarsUi.ProgramStepPointer < ON_BRICK_PROGRAMSTEPS)
- {
- VarsUi.ProgramStepPointer++;
- }
- if (VarsUi.ProgramStepPointer == ON_BRICK_PROGRAMSTEPS)
- {
- // If tmp file exist -> delete it
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_PROGRAM_FILENAME,(char*)TXT_TMP_EXT);
- VarsUi.TmpHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FilenameBuffer,VarsUi.SearchFilenameBuffer,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- pMapLoader->pFunc(DELETE,VarsUi.FilenameBuffer,NULL,NULL);
- }
-
- // Save program as tmp file
- VarsUi.TmpLength = FILEHEADER_LENGTH + ON_BRICK_PROGRAMSTEPS;
- VarsUi.TmpHandle = pMapLoader->pFunc(OPENWRITE,VarsUi.FilenameBuffer,NULL,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- VarsUi.FileHeader[0] = (UBYTE)(FILEFORMAT_PROGRAM >> 8);
- VarsUi.FileHeader[1] = (UBYTE)(FILEFORMAT_PROGRAM);
- VarsUi.FileHeader[2] = (UBYTE)(ON_BRICK_PROGRAMSTEPS >> 8);
- VarsUi.FileHeader[3] = (UBYTE)(ON_BRICK_PROGRAMSTEPS);
- VarsUi.FileHeader[4] = (UBYTE)(ON_BRICK_PROGRAMSTEPS);
- VarsUi.FileHeader[5] = (UBYTE)0;
- VarsUi.FileHeader[6] = (UBYTE)0;
- VarsUi.FileHeader[7] = (UBYTE)0;
- VarsUi.TmpLength = FILEHEADER_LENGTH;
- pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)VarsUi.FileHeader,&VarsUi.TmpLength);
- VarsUi.TmpLength = ON_BRICK_PROGRAMSTEPS;
- pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)VarsUi.ProgramSteps,&VarsUi.TmpLength);
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- }
- else
- {
- VarsUi.State++;
- }
- }
- Action = MENU_DRAW;
- }
- break;
-
- default : // Display memory error text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_OBP_MEMORY_FULL_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- cUiMenuPrevFile();
- IOMapUi.State = NEXT_MENU;
- VarsUi.State = 0;
- }
- }
- break;
-
- }
- }
- break;
-
- }
-
- // Update display screen
- if (Action == MENU_DRAW)
- {
- VarsUi.OBPTimer = 0;
-
- for (VarsUi.Pointer = 0;VarsUi.Pointer < ON_BRICK_PROGRAMSTEPS;VarsUi.Pointer++)
- {
- VarsUi.Tmp = VarsUi.ProgramSteps[VarsUi.Pointer];
- if ((VarsUi.Tmp >= MENU_ACTION_EMPTY) && (VarsUi.Tmp < MENU_ACTION_INVALID))
- {
- VarsUi.Tmp -= MENU_ACTION_EMPTY;
- pMapDisplay->StepIcons[VarsUi.Pointer] = VarsUi.Tmp + 1;
- }
- if ((VarsUi.Tmp >= MENU_WAIT_EMPTY) && (VarsUi.Tmp < MENU_WAIT_INVALID))
- {
- VarsUi.Tmp -= MENU_WAIT_EMPTY;
- pMapDisplay->StepIcons[VarsUi.Pointer] = VarsUi.Tmp + 1 + 16;
- }
- if (VarsUi.Tmp == MENU_LOOP)
- {
- pMapDisplay->StepIcons[VarsUi.Pointer] = 31;
- }
- if (VarsUi.Tmp == MENU_STOP)
- {
- pMapDisplay->StepIcons[VarsUi.Pointer] = 32;
- }
- pMapDisplay->UpdateMask |= STEPICON_BIT(STEPICON_1 + VarsUi.Pointer);
- }
-
- // and cursor
- pMapDisplay->pBitmaps[BITMAP_1] = (BMPMAP*)VarsUi.CursorTmp;
- if (VarsUi.ProgramStepPointer < ON_BRICK_PROGRAMSTEPS)
- {
- VarsUi.CursorTmp[4] = 13 + (VarsUi.ProgramStepPointer * 17);
- VarsUi.CursorTmp[5] = 24;
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_1);
- }
- if (PROG_RUNNING != pMapCmd->ProgStatus)
- {
- pMapDisplay->EraseMask |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_2));
- }
- pMapDisplay->EraseMask |= TEXTLINE_BIT(TEXTLINE_4);
- pMapDisplay->UpdateMask |= (SPECIAL_BIT(STEPLINE) | SPECIAL_BIT(TOPLINE));
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiFileRun **********************************************************
-
-UBYTE cUiFindFileType(UBYTE *Filename) // Find file type number
-{
- UBYTE Ext[FILENAME_LENGTH + 1];
- UBYTE Result;
- UBYTE Tmp1;
- UBYTE Tmp2;
-
- Result = FILETYPE_ALL;
-
- Tmp1 = 0;
- while ((Filename[Tmp1]) && (Tmp1 < FILENAME_LENGTH)) // Search forward for termination
- {
- Tmp1++;
- }
-
- while ((Tmp1) && (Filename[Tmp1] != '.')) // Search backward for "."
- {
- Tmp1--;
- }
-
- if (Filename[Tmp1] == '.') // If "."
- {
- Tmp1++;
- Tmp2 = 0;
-
- while ((Filename[Tmp1]) && (Tmp1 < FILENAME_LENGTH)) // Convert to upper to Ext
- {
- Ext[Tmp2] = tolower(Filename[Tmp1]);
- Tmp1++;
- Tmp2++;
- }
- Ext[Tmp2] = 0; // Inser termination
-
- // Calculate type
- for (Tmp1 = FILETYPE_ALL;(Tmp1 < FILETYPES) && (Result == FILETYPE_ALL);Tmp1++)
- {
- if (strcmp((char*)TXT_FILE_EXT[Tmp1],(char*)Ext) == 0)
- {
- Result = Tmp1;
- }
- }
- }
-
- return (Result);
-}
-
-
-#define FILERUN_FILENAMELINE TEXTLINE_4
-#define FILERUN_TEXTLINE TEXTLINE_5
-
-UBYTE cUiFileRun(UBYTE Action) // Run selected file
-{
- switch (Action)
- {
-
- case MENU_INIT :
- {
- VarsUi.Tmp = 0;
- while ((VarsUi.SelectedFilename[VarsUi.Tmp]) && (VarsUi.Tmp < FILENAME_LENGTH)) // Search forward for termination
- {
- VarsUi.Tmp++;
- }
-
- while ((VarsUi.Tmp) && (VarsUi.SelectedFilename[VarsUi.Tmp] != '.')) // Search backward for "."
- {
- VarsUi.Tmp--;
- }
-
- if (VarsUi.Tmp > DISPLAYLINE_LENGTH)
- {
- VarsUi.Tmp = DISPLAYLINE_LENGTH;
- }
-
- VarsUi.DisplayBuffer[VarsUi.Tmp] = 0;
-
- while (VarsUi.Tmp) // Copy only name not ext
- {
- VarsUi.Tmp--;
- VarsUi.DisplayBuffer[VarsUi.Tmp] = VarsUi.SelectedFilename[VarsUi.Tmp];
- }
-
- pMapDisplay->pTextLines[FILERUN_FILENAMELINE] = (UBYTE*)VarsUi.DisplayBuffer;
- pMapDisplay->TextLinesCenterFlags = TEXTLINE_BIT(FILERUN_FILENAMELINE);
- pMapDisplay->UpdateMask = TEXTLINE_BIT(FILERUN_FILENAMELINE);
- }
- break;
-
- case MENU_RUN :
- {
- if (VarsUi.Timer < DISPLAY_SHOW_TIME)
- {
- VarsUi.Timer++;
- }
-
- switch (VarsUi.State)
- {
- case 0 :
- {
- IOMapUi.Flags |= UI_BUSY;
- VarsUi.State++;
- }
- break;
-
- case 1 : // Set state from extention when sound is ready
- {
- if (SOUND_IDLE == pMapSound->State)
- {
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_RUNNING);
- pMapDisplay->UpdateMask = (TEXTLINE_BIT(FILERUN_TEXTLINE) | TEXTLINE_BIT(FILERUN_FILENAMELINE));
- pMapDisplay->TextLinesCenterFlags = (TEXTLINE_BIT(FILERUN_TEXTLINE) | TEXTLINE_BIT(FILERUN_FILENAMELINE));
- cUiRunning(MENU_INIT);
- VarsUi.State++;
- }
- }
- break;
-
- case 2 :
- {
- if ((!pMapDisplay->EraseMask) && (!pMapDisplay->UpdateMask))
- {
- VarsUi.State = 10 * cUiFindFileType(VarsUi.SelectedFilename);
- if (VarsUi.State == (FILETYPE_TRYME * 10))
- {
- VarsUi.State = FILETYPE_LMS * 10;
- }
- }
- }
- break;
-
- case (FILETYPE_SOUND * 10 + 0) : // Start sound file (*.snd, *.rso) Wait for sound idle
- {
- strcpy((char*)pMapSound->SoundFilename,(char*)VarsUi.SelectedFilename);
- pMapSound->Volume = IOMapUi.Volume;
- pMapSound->Mode = SOUND_ONCE;
- pMapSound->Flags |= SOUND_UPDATE;
- VarsUi.State++;
- }
- break;
-
- case (FILETYPE_SOUND * 10 + 1) : // Wait for stop or user break
- {
- cUiRunning(MENU_RUN);
-
- if (SOUND_IDLE == pMapSound->State)
- {
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_ENDED);
- VarsUi.State = 99;
- }
- if (BUTTON_EXIT == cUiReadButtons())
- {
- pMapSound->Flags &= ~SOUND_UPDATE;
- pMapSound->State = SOUND_STOP;
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_ABORTED);
- VarsUi.State = 99;
- }
- }
- break;
-
- case (FILETYPE_LMS * 10 + 0) : // Start LMS file (*.rxe)
- {
- if ((!pMapDisplay->EraseMask) && (pMapCmd->ProgStatus == PROG_IDLE) && (!pMapButton->State[BTN4]))
- {
- strcpy((char*)pMapCmd->FileName,(char*)VarsUi.SelectedFilename);
- pMapCmd->ActivateFlag = TRUE;
- VarsUi.State++;
- }
- }
- break;
-
- case (FILETYPE_LMS * 10 + 1) : // Wait for program stop or user break
- {
- cUiRunning(MENU_RUN);
-
- if ((IOMapUi.Flags & UI_REDRAW_STATUS) && (IOMapUi.Flags & UI_ENABLE_STATUS_UPDATE))
- {
- pMapDisplay->pTextLines[FILERUN_FILENAMELINE] = (UBYTE*)VarsUi.DisplayBuffer;
- pMapDisplay->TextLinesCenterFlags = TEXTLINE_BIT(FILERUN_FILENAMELINE);
- pMapDisplay->UpdateMask = TEXTLINE_BIT(FILERUN_FILENAMELINE);
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_RUNNING);
- pMapDisplay->UpdateMask = (TEXTLINE_BIT(FILERUN_TEXTLINE) | TEXTLINE_BIT(FILERUN_FILENAMELINE));
- pMapDisplay->TextLinesCenterFlags = (TEXTLINE_BIT(FILERUN_TEXTLINE) | TEXTLINE_BIT(FILERUN_FILENAMELINE));
- }
-
- switch (pMapCmd->ProgStatus)
- {
- case PROG_RUNNING :
- {
- }
- break;
-
- case PROG_OK :
- {
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_ENDED);
- VarsUi.State = 99;
- }
- break;
-
- case PROG_ABORT :
- {
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_ABORTED);
- VarsUi.State = 99;
- }
- break;
-
- default :
- {
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_FILE_ERROR);
- VarsUi.State = 99;
- }
- break;
-
- }
- }
- break;
-
- case (FILETYPE_NXT * 10 + 0) :// Start Program file (*.prg)
- {
- VarsUi.TmpHandle = pMapLoader->pFunc(OPENREAD,VarsUi.SelectedFilename,NULL,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- VarsUi.TmpLength = FILEHEADER_LENGTH;
- pMapLoader->pFunc(READ,(UBYTE*)&VarsUi.TmpHandle,VarsUi.FileHeader,&VarsUi.TmpLength);
- VarsUi.TmpLength = ON_BRICK_PROGRAMSTEPS;
- pMapLoader->pFunc(READ,(UBYTE*)&VarsUi.TmpHandle,VarsUi.ProgramSteps,&VarsUi.TmpLength);
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- }
- if ((ON_BRICK_PROGRAMSTEPS == VarsUi.TmpLength) && (VarsUi.FileHeader[0] == (UBYTE)(FILEFORMAT_PROGRAM >> 8)) && (VarsUi.FileHeader[1] == (UBYTE)(FILEFORMAT_PROGRAM)))
- {
- // If tmp file exist -> delete it
- sprintf((char*)VarsUi.FilenameBuffer,"%s.%s",(char*)TEMP_PROGRAM_FILENAME,(char*)TXT_TMP_EXT);
- VarsUi.TmpHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FilenameBuffer,VarsUi.SearchFilenameBuffer,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- pMapLoader->pFunc(DELETE,VarsUi.FilenameBuffer,NULL,NULL);
- }
-
- // Save program as tmp file
- VarsUi.TmpLength = FILEHEADER_LENGTH + ON_BRICK_PROGRAMSTEPS;
- VarsUi.TmpHandle = pMapLoader->pFunc(OPENWRITE,VarsUi.FilenameBuffer,NULL,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- VarsUi.TmpLength = FILEHEADER_LENGTH;
- pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)VarsUi.FileHeader,&VarsUi.TmpLength);
- VarsUi.TmpLength = ON_BRICK_PROGRAMSTEPS;
- pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.TmpHandle,(UBYTE*)VarsUi.ProgramSteps,&VarsUi.TmpLength);
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- }
-
- pMapDisplay->UpdateMask &= ~TEXTLINE_BIT(FILERUN_FILENAMELINE);
- pMapDisplay->EraseMask |= TEXTLINE_BIT(FILERUN_FILENAMELINE);
- VarsUi.State++;
- }
- else
- {
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_FILE_ERROR);
- VarsUi.State = 99;
- }
- VarsUi.GUSState = 0;
- }
- break;
-
- case (FILETYPE_NXT * 10 + 1) : // Wait for program stop or user break
- {
- VarsUi.State = VarsUi.GUSState;
- cUiOnBrickProgramming(MENU_RUN);
- VarsUi.GUSState = VarsUi.State;
- if (VarsUi.State)
- {
- VarsUi.State = (FILETYPE_NXT * 10 + 1);
- }
- else
- {
- pMapDisplay->pTextLines[FILERUN_TEXTLINE] = cUiGetString(TXT_FILERUN_ENDED);
- VarsUi.State = 99;
- }
- }
- break;
-
- case 99 : // Wait for display show time or user action
- {
- pMapDisplay->EraseMask = SCREEN_BIT(SCREEN_LARGE);
- pMapDisplay->UpdateMask = (TEXTLINE_BIT(FILERUN_TEXTLINE) | TEXTLINE_BIT(FILERUN_FILENAMELINE));
- pMapDisplay->TextLinesCenterFlags = (TEXTLINE_BIT(FILERUN_TEXTLINE) | TEXTLINE_BIT(FILERUN_FILENAMELINE));
- IOMapUi.Flags |= UI_REDRAW_STATUS | UI_ENABLE_STATUS_UPDATE;
- cUiRunning(MENU_UPDATE);
- VarsUi.Timer = 0;
- VarsUi.State++;
- }
- break;
-
- default :
- {
- if ((++VarsUi.Timer >= DISPLAY_SHOW_TIME) || (BUTTON_NONE != cUiReadButtons()))
- {
- if (pMapCmd->ProgStatus != PROG_IDLE)
- pMapCmd->ProgStatus = PROG_RESET;
- pMapDisplay->UpdateMask = 0;
- pMapDisplay->TextLinesCenterFlags = 0;
- cUiRunning(MENU_EXIT);
- pMapDisplay->EraseMask = TEXTLINE_BIT(FILERUN_TEXTLINE);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(FILERUN_FILENAMELINE);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(FILERUN_FILENAMELINE);
- IOMapUi.Flags &= ~UI_BUSY;
- VarsUi.State = 0;
- }
- }
- break;
-
- }
- }
- break;
-
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiFileDelete *******************************************************
-
-UBYTE cUiFileDelete(UBYTE Action)
-{
- if (MENU_INIT == Action)
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.State++;
- }
- break;
-
- case 1 :
- {
- if (SOUND_IDLE == pMapSound->State)
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 2 :
- {
- pMapLoader->pFunc(DELETE,VarsUi.SelectedFilename,NULL,NULL);
- VarsUi.State++;
- }
- break;
-
- default : // Display deleted text
- {
- if (!cUiFeedback((BMPMAP*)Info,TXT_FB_FD_FILE_DELETED_INFO,0,DISPLAY_SHOW_TIME))
- {
- IOMapUi.State = EXIT_PRESSED;
- VarsUi.State = 0;
- }
- }
- break;
-
- }
- }
-
- return (VarsUi.State);
-}
-
-
-//******* cUiView ************************************************************
-
-UBYTE cUiView(UBYTE Action) // MENU_INIT
-{
- switch (VarsUi.State)
- {
- case 0 :
- {
- switch (Action)
- {
- case MENU_INIT : // Init
- {
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_VIEW_SELECT);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_SMALL);
-// Init ports
- for (VarsUi.Tmp = 0;VarsUi.Tmp < DATALOGPORTS;VarsUi.Tmp++)
- {
- VarsUi.DatalogPort[VarsUi.Tmp] = MENU_SENSOR_EMPTY;
- }
- }
- break;
-
- default :
- {
- if ((Action > MENU_SENSOR_EMPTY) && (Action < MENU_SENSOR_INVALID))
- {
- VarsUi.SelectedSensor = Action;
- }
- if ((Action >= MENU_PORT_1) && (Action <= MENU_PORT_C))
- {
- VarsUi.SelectedPort = Action;
-
- VarsUi.DatalogPort[VarsUi.SelectedPort - MENU_PORT_1] = VarsUi.SelectedSensor;
-
- IOMapUi.Flags |= UI_BUSY;
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_LARGE);
- pMapDisplay->pBitmaps[BITMAP_1] = (BMPMAP*)Display;
- pMapDisplay->UpdateMask = BITMAP_BIT(BITMAP_1);
- IOMapUi.Flags |= UI_REDRAW_STATUS;
- VarsUi.ReadoutTimer = 0;;
- VarsUi.State++;
-
- VarsUi.SensorReset = TRUE;
- }
- }
- break;
-
- }
- }
- break;
-
- case 1 :
- {
- VarsUi.ReadoutTimer++;
- cUiUpdateSensor(1);
- if (VarsUi.ReadoutTimer >= DISPLAY_VIEW_UPDATE)
- {
- VarsUi.ReadoutTimer = 0;
- cUiPrintSensorInDisplayBuffer(VarsUi.SelectedPort);
- pMapDisplay->pTextLines[TEXTLINE_4] = VarsUi.DisplayBuffer;
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_4);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_4);
- }
-
- VarsUi.Tmp = cUiReadButtons();
- if (VarsUi.Tmp == BUTTON_EXIT)
- {
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_VIEW_SELECT);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask &= ~TEXTLINE_BIT(TEXTLINE_4);
- pMapDisplay->EraseMask |= SCREEN_BIT(SCREEN_SMALL);
- VarsUi.State++;
- }
- if (VarsUi.Tmp == BUTTON_ENTER)
- {
- VarsUi.SensorReset = TRUE;
- }
- }
- break;
-
- default :
- {
- cUiReleaseSensors();
- IOMapUi.Flags &= ~UI_BUSY;
- VarsUi.State = 0;
- IOMapUi.State = EXIT_PRESSED;
- }
- break;
-
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiBtOn ************************************************************
-
-UBYTE cUiBtOn(UBYTE Action)
-{
- switch (Action)
- {
- case MENU_ON :
- {
- switch (VarsUi.State)
- {
- case 0 : // Turn BT on
- {
- VarsUi.BTCommand = (UBYTE)BTON;
- VarsUi.BTPar1 = (UBYTE)0;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- break;
-
- case 1 : // Display turning on text
- {
- if (!cUiFeedback((BMPMAP*)Wait,TXT_FB_BT_TURNING_ON_WAIT,0,0))
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 2 : // Check result
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- if (VarsUi.BTResult == SUCCESS)
- {
- Action = MENU_EXIT;
- }
- else
- {
- VarsUi.State++;
- }
- }
- }
- break;
-
- default : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_TURNING_ON_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- case MENU_OFF :
- {
- switch (VarsUi.State)
- {
- case 0 : // Turn BT off
- {
- VarsUi.BTCommand = (UBYTE)BTOFF;
- VarsUi.BTPar1 = (UBYTE)0;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- break;
-
- case 1 : // Display turning off text
- {
- if (!cUiFeedback((BMPMAP*)Wait,TXT_FB_BT_TURNING_OFF_WAIT,0,0))
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 2 : // Check result
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- if (VarsUi.BTResult == SUCCESS)
- {
- Action = MENU_EXIT;
- }
- else
- {
- VarsUi.State++;
- }
- }
- }
- break;
-
- default : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_TURNING_OFF_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- }
- if (Action == MENU_EXIT)
- {
- VarsUi.State = 0;
- IOMapUi.State = EXIT_PRESSED;
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiBtVisiability ***************************************************
-
-UBYTE cUiBtVisiability(UBYTE Action) // Visibility on/off
-{
- switch (Action)
- {
- case MENU_ON : // Set visible
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.BTCommand = (UBYTE)VISIBILITY;
- VarsUi.BTPar1 = (UBYTE)1;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.State++;
- }
- else
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- default :
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- case MENU_OFF : // Set invisible
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.BTCommand = (UBYTE)VISIBILITY;
- VarsUi.BTPar1 = (UBYTE)0;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.State++;
- }
- else
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- default :
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- }
- if (Action == MENU_EXIT)
- {
- VarsUi.State = 0;
- IOMapUi.State = EXIT_PRESSED;
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiBtSearch ********************************************************
-
-UBYTE cUiBtSearch(UBYTE Action) // Search for devices
-{
- if (Action == MENU_INIT) // Init
- {
- switch (VarsUi.State)
- {
- case 0 : // Show three menu icons
- {
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = pMapDisplay->pMenuIcons[MENUICON_CENTER];
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = pMapDisplay->pMenuIcons[MENUICON_CENTER];
- pMapDisplay->UpdateMask |= MENUICON_BITS;
- VarsUi.State++;
- }
- break;
-
- case 1 : // Display wait text and start search
- {
- if (!cUiFeedback((BMPMAP*)Wait,TXT_FB_BT_SEARCHING_WAIT,0,0))
- {
- VarsUi.BTCommand = (UBYTE)SEARCH;
- VarsUi.BTPar1 = (UBYTE)1;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.DisplayBuffer[0] = 0;
- pMapDisplay->pMenuText = VarsUi.DisplayBuffer;
- pMapDisplay->UpdateMask |= SPECIAL_BIT(MENUTEXT);
- VarsUi.NoOfNames = 0;
- VarsUi.NoOfDevices = 0;
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- }
- break;
-
- case 2 : // Wait for search finished
- {
- if (VarsUi.NoOfNames != pMapComm->BtDeviceNameCnt)
- {
- VarsUi.NoOfNames = pMapComm->BtDeviceNameCnt;
-
- if ((VarsUi.NoOfNames) && (VarsUi.NoOfNames <= DISPLAYLINE_LENGTH))
- {
- sprintf((char*)VarsUi.DisplayBuffer,"%.*s",VarsUi.NoOfNames,"****************");
- pMapDisplay->pMenuText = VarsUi.DisplayBuffer;
- pMapDisplay->UpdateMask |= SPECIAL_BIT(MENUTEXT);
- }
- }
- if (VarsUi.NoOfDevices != pMapComm->BtDeviceCnt)
- {
- VarsUi.NoOfDevices = pMapComm->BtDeviceCnt;
-
- if ((VarsUi.NoOfDevices) && (VarsUi.NoOfDevices <= DISPLAYLINE_LENGTH))
- {
- sprintf((char*)VarsUi.DisplayBuffer,"%.*s",VarsUi.NoOfDevices,"????????????????");
- pMapDisplay->pMenuText = VarsUi.DisplayBuffer;
- pMapDisplay->UpdateMask |= SPECIAL_BIT(MENUTEXT);
- }
- }
-
- if (VarsUi.BTResult != INPROGRESS)
- {
- cUiBTCommand(UI_BT_GET_DEVICES,0,&VarsUi.Devices,NULL);
- if (VarsUi.Devices)
- {
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
-
- if (cUiReadButtons() == BUTTON_EXIT)
- {
- VarsUi.BTCommand = (UBYTE)STOPSEARCH;
- VarsUi.BTPar1 = (UBYTE)0;
- VarsUi.BTPar2 = (UBYTE)0;
- pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult));
- VarsUi.State = 4;
- }
- }
- break;
-
- case 3 : // Auto enter to next menu
- {
- IOMapUi.State = ENTER_PRESSED;
- VarsUi.State = 0;
- }
- break;
-
- case 4 : // Display info text
- {
- if (!cUiFeedback((BMPMAP*)Info,TXT_FB_BT_SEARCH_ABORTED_INFO,0,DISPLAY_SHOW_TIME))
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 5 : // Wait for abort
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- cUiBTCommand(UI_BT_GET_DEVICES,0,&VarsUi.Devices,NULL);
- if (VarsUi.Devices)
- {
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- }
- break;
-
- case 6 : // Auto enter to next menu
- {
- IOMapUi.State = ENTER_PRESSED;
- VarsUi.State = 0;
- }
- break;
-
- default : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_SEARCHING_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- VarsUi.State = 0;
- IOMapUi.State = EXIT_PRESSED;
- }
- }
- break;
-
- }
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiBtDeviceList ****************************************************
-
-UBYTE cUiBtDeviceList(UBYTE Action) // Show devices
-{
- switch (Action)
- {
- case MENU_INIT : // Init "Search" list
- {
- VarsUi.SelectedDevice = 0;
- VarsUi.DevicesKnown = 0;
- cUiBTCommand(UI_BT_GET_DEVICES,VarsUi.DevicesKnown,&VarsUi.Devices,NULL);
- if (VarsUi.Devices)
- {
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_BTDEVICELIST_SELECT);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
- VarsUi.MenuIconTextSave = pMapDisplay->pMenuText;
- VarsUi.DeviceCenter = 1;
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- else
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- case MENU_INIT_ALTERNATIVE : // Init only "My contacts"
- {
- VarsUi.SelectedDevice = 0;
- VarsUi.DevicesKnown = 1;
- cUiBTCommand(UI_BT_GET_DEVICES,VarsUi.DevicesKnown,&VarsUi.Devices,NULL);
- if (VarsUi.Devices)
- {
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_BTDEVICELIST_SELECT);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
- VarsUi.MenuIconTextSave = pMapDisplay->pMenuText;
- VarsUi.DeviceCenter = 1;
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- else
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- case MENU_LEFT : // Left button
- {
- cUiListLeft(VarsUi.Devices,&VarsUi.DeviceCenter);
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_RIGHT : // Right button
- {
- cUiListRight(VarsUi.Devices,&VarsUi.DeviceCenter);
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_SELECT : // Select for connection
- {
- VarsUi.SelectedDevice = VarsUi.DeviceCenter;
- pMapDisplay->pMenuText = VarsUi.MenuIconTextSave;
- IOMapUi.State = NEXT_MENU;
- }
- break;
-
- case MENU_DELETE : // Remove device from "My contacts"
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- if (VarsUi.SelectedDevice)
- {
- if (cUiBTGetDeviceIndex(VarsUi.DevicesKnown,VarsUi.SelectedDevice - 1,&VarsUi.BTIndex))
- {
- VarsUi.BTCommand = (UBYTE)REMOVEDEVICE;
- VarsUi.BTPar1 = (UBYTE)VarsUi.BTIndex;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- else
- {
- Action = MENU_EXIT;
- }
- VarsUi.SelectedDevice = 0;
- }
- else
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- case 1 :
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- if (VarsUi.BTResult == SUCCESS)
- {
- Action = MENU_EXIT;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- }
- break;
-
- default : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_REMOVE_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- }
-
- if (Action == MENU_DRAW)
- {
- cUiListCalc(VarsUi.Devices,&VarsUi.DeviceCenter,&VarsUi.DeviceLeft,&VarsUi.DeviceRight);
-
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = NULL;
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = NULL;
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = NULL;
-
- if (VarsUi.DeviceLeft)
- {
- VarsUi.Tmp = VarsUi.DeviceLeft - 1;
- cUiBTCommand(UI_BT_GET_DEVICE_TYPE,VarsUi.DevicesKnown,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_LEFT);
- }
- if (VarsUi.DeviceCenter)
- {
- VarsUi.Tmp = VarsUi.DeviceCenter - 1;
- cUiBTCommand(UI_BT_GET_DEVICE_TYPE,VarsUi.DevicesKnown,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_CENTER);
- }
- if (VarsUi.DeviceRight)
- {
- VarsUi.Tmp = VarsUi.DeviceRight - 1;
- cUiBTCommand(UI_BT_GET_DEVICE_TYPE,VarsUi.DevicesKnown,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- pMapDisplay->UpdateMask |= MENUICON_BIT(MENUICON_RIGHT);
- }
-
- pMapDisplay->EraseMask |= TEXTLINE_BIT(TEXTLINE_5);
-
- VarsUi.Tmp = VarsUi.DeviceCenter - 1;
- cUiBTCommand(UI_BT_GET_DEVICE_NAME,VarsUi.DevicesKnown,&VarsUi.Tmp,VarsUi.DisplayBuffer);
-
- pMapDisplay->pMenuText = VarsUi.DisplayBuffer;
- pMapDisplay->EraseMask |= MENUICON_BITS;
- pMapDisplay->UpdateMask |= (SPECIAL_BIT(FRAME_SELECT) | SPECIAL_BIT(MENUTEXT));
- }
- if (Action == MENU_EXIT)
- {
- VarsUi.State = 0;
- IOMapUi.State = EXIT_PRESSED;
- }
-
- return (VarsUi.State);
-}
-
-
-//******* cUiBtConnectList ***************************************************
-
-UBYTE cUiBtConnectList(UBYTE Action) // Show connections and maybe disconnect
-{
- switch (Action)
- {
- case MENU_INIT : // Init
- {
- VarsUi.Slots = SIZE_OF_BT_CONNECT_TABLE;
- VarsUi.SlotCenter = 2;
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_LEFT : // Left button
- {
- cUiListLeft(VarsUi.Slots,&VarsUi.SlotCenter);
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_RIGHT : // Right button
- {
- cUiListRight(VarsUi.Slots,&VarsUi.SlotCenter);
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_UPDATE : // Check connection valid
- {
- VarsUi.Tmp = VarsUi.SlotCenter - 1;
- if (cUiBTCommand(UI_BT_GET_CONNECTION_VALID,NULL,&VarsUi.Tmp,NULL) != UI_BT_SUCCES)
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- case MENU_DISCONNECT : // Disconnect
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- VarsUi.SelectedSlot = VarsUi.SlotCenter - 1;
- VarsUi.BTCommand = (UBYTE)DISCONNECT;
- VarsUi.BTPar1 = (UBYTE)VarsUi.SelectedSlot;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- break;
-
- case 1 :
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- if (VarsUi.BTResult == SUCCESS)
- {
- Action = MENU_EXIT;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- }
- break;
-
- default : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_DISCONNECT_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- }
- if (Action == MENU_DRAW)
- {
- cUiListCalc(VarsUi.Slots,&VarsUi.SlotCenter,&VarsUi.SlotLeft,&VarsUi.SlotRight);
-
- pMapDisplay->pBitmaps[BITMAP_2] = (BMPMAP*)VarsUi.PortBitmapLeft;
- pMapDisplay->pBitmaps[BITMAP_3] = (BMPMAP*)VarsUi.PortBitmapCenter;
- pMapDisplay->pBitmaps[BITMAP_4] = (BMPMAP*)VarsUi.PortBitmapRight;
-
- VarsUi.Tmp = VarsUi.SlotLeft - 1;
- if (cUiBTCommand(UI_BT_GET_CONNECTION_VALID,NULL,&VarsUi.Tmp,NULL) == UI_BT_SUCCES)
- {
- cUiBTCommand(UI_BT_GET_CONNECTION_TYPE,NULL,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- cUiDrawPortNo(VarsUi.PortBitmapLeft,MENUICON_LEFT,VarsUi.Tmp);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_2);
- }
- else
- {
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = (UBYTE*)&Connections->Data[VarsUi.Tmp * Connections->ItemPixelsX * (Connections->ItemPixelsY / 8)];
- }
-
- VarsUi.Tmp = VarsUi.SlotCenter - 1;
- cUiBTCommand(UI_BT_GET_CONNECTION_NAME,NULL,&VarsUi.Tmp,VarsUi.DisplayBuffer);
- pMapDisplay->EraseMask |= TEXTLINE_BIT(TEXTLINE_5);
- pMapDisplay->pMenuText = VarsUi.DisplayBuffer;
-
- if (cUiBTCommand(UI_BT_GET_CONNECTION_VALID,NULL,&VarsUi.Tmp,NULL) == UI_BT_SUCCES)
- {
- cUiBTCommand(UI_BT_GET_CONNECTION_TYPE,NULL,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- cUiDrawPortNo(VarsUi.PortBitmapCenter,MENUICON_CENTER,VarsUi.Tmp);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_3);
- }
- else
- {
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Connections->Data[VarsUi.Tmp * Connections->ItemPixelsX * (Connections->ItemPixelsY / 8)];
- }
- VarsUi.Tmp = VarsUi.SlotRight - 1;
- if (cUiBTCommand(UI_BT_GET_CONNECTION_VALID,NULL,&VarsUi.Tmp,NULL) == UI_BT_SUCCES)
- {
- cUiBTCommand(UI_BT_GET_CONNECTION_TYPE,NULL,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- cUiDrawPortNo(VarsUi.PortBitmapRight,MENUICON_RIGHT,VarsUi.Tmp);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_4);
- }
- else
- {
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = (UBYTE*)&Connections->Data[VarsUi.Tmp * Connections->ItemPixelsX * (Connections->ItemPixelsY / 8)];
- }
- pMapDisplay->EraseMask &= ~SCREEN_BIT(SCREEN_LARGE);
- pMapDisplay->EraseMask |= MENUICON_BITS;
- pMapDisplay->UpdateMask |= (MENUICON_BITS | SPECIAL_BIT(FRAME_SELECT) | SPECIAL_BIT(MENUTEXT));
- }
- if (Action == MENU_EXIT)
- {
- VarsUi.State = 0;
- IOMapUi.State = EXIT_PRESSED;
- }
-
-
- return (VarsUi.State);
-}
-
-
-UBYTE cUiBtConnect(UBYTE Action) // Select connection no and insert device
-{
- switch (Action)
- {
- case MENU_INIT : // Init
- {
- VarsUi.Slots = SIZE_OF_BT_CONNECT_TABLE - 1;
- VarsUi.SlotCenter = 1;
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_LEFT : // Left button
- {
- cUiListLeft(VarsUi.Slots,&VarsUi.SlotCenter);
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_RIGHT : // Right button
- {
- cUiListRight(VarsUi.Slots,&VarsUi.SlotCenter);
- Action = MENU_DRAW;
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_CONNECT : // Insert device
- {
- switch (VarsUi.State)
- {
- case 0 : // Check selected device
- {
- VarsUi.SelectedSlot = (UBYTE)VarsUi.SlotCenter;
- if (VarsUi.SelectedDevice)
- {
- VarsUi.State++;
- }
- else
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- case 1 : // Display wait text
- {
- if (!cUiFeedback((BMPMAP*)Wait,TXT_FB_BT_CONNECTING_WAIT,0,0))
- {
- if (cUiBTGetDeviceIndex(VarsUi.DevicesKnown,VarsUi.SelectedDevice - 1,&VarsUi.BTIndex))
- {
- VarsUi.BTCommand = (UBYTE)CONNECT;
- VarsUi.BTPar1 = (UBYTE)VarsUi.BTIndex;
- VarsUi.BTPar2 = (UBYTE)VarsUi.SelectedSlot;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- else
- {
- VarsUi.State = 99;
- }
- }
- }
- break;
-
- case 2 : // Wait for result
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- if (VarsUi.BTResult == SUCCESS)
- {
- Action = MENU_EXIT;
- }
- else
- {
- if (VarsUi.BTResult == REQPIN)
- {
- sprintf((char*)pMapSound->SoundFilename,"%s.%s",(char*)UI_ATTENTION_SOUND,(char*)TXT_FILE_EXT[FILETYPE_SOUND]);
- pMapSound->Volume = IOMapUi.Volume;
- pMapSound->Mode = SOUND_ONCE;
- pMapSound->Flags |= SOUND_UPDATE;
- strcpy((char*)VarsUi.UserString,(char*)DEFAULT_PIN_CODE);
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 6;
- }
- }
- }
- }
- break;
-
- case 3 : // Get pincode and send
- {
- if (!cUiGetUserString(0))
- {
- if (VarsUi.UserString[0] == 0)
- {
- sprintf((char*)VarsUi.UserString,"%08lX",VarsUi.CRPasskey);
- Action = MENU_EXIT;
- }
- else
- {
- VarsUi.State++;
- }
- pMapComm->pFunc2(VarsUi.UserString);
- }
- }
- break;
-
- case 4 : // Display wait text
- {
- if (!cUiFeedback((BMPMAP*)Wait,TXT_FB_BT_CONNECTING_WAIT,0,0))
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 5 : // Wait for result
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- if (VarsUi.BTResult == SUCCESS)
- {
- Action = MENU_EXIT;
- }
- else
- {
- VarsUi.State = 6;
- }
- }
- }
- break;
-
- case 6 : // Display busy text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_CONNECT_BUSY_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- default : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_CONNECTING_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- case MENU_SEND :
- {
- switch (VarsUi.State)
- {
- case 0 : // Check connection
- {
- VarsUi.SelectedSlot = (UBYTE)VarsUi.SlotCenter;
- if (VarsUi.SelectedFilename[0] && (cUiBTCommand(UI_BT_GET_CONNECTION_NAME,NULL,&VarsUi.SelectedSlot,NULL) == UI_BT_SUCCES))
- {
- VarsUi.State += 2;
- }
- else
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 1 : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_SENDING_NO_CONN_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- case 2 : // Display wait text and send file
- {
- if (!cUiFeedback((BMPMAP*)Wait,TXT_FB_BT_SENDING_WAIT,0,0))
- {
- VarsUi.BTCommand = (UBYTE)SENDFILE;
- VarsUi.BTPar1 = (UBYTE)VarsUi.SelectedSlot;
- VarsUi.BTPar2 = (UBYTE)0;
- if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,VarsUi.SelectedFilename,&(VarsUi.BTResult)) == SUCCESS)
- {
- VarsUi.Timer = 0;
- VarsUi.State++;
- }
- else
- {
- VarsUi.State = 4;
- }
- }
- }
- break;
-
- case 3 : // Wait for result
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- if (VarsUi.BTResult == SUCCESS)
- {
- VarsUi.State += 2;
- }
- else
- {
- VarsUi.State++;
- }
- }
- VarsUi.Timer++;
- }
- break;
-
- case 4 : // Display fail text
- {
- if (!cUiFeedback((BMPMAP*)Fail,TXT_FB_BT_SENDING_FAIL,0,DISPLAY_SHOW_ERROR_TIME))
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- case 5 : // Wait min. "DISPLAY_SHOW_TIME" to show "TXT_FB_BT_SENDING_WAIT"
- {
- if (++VarsUi.Timer >= DISPLAY_SHOW_TIME)
- {
- Action = MENU_EXIT;
- }
- }
- break;
-
- }
- }
- break;
-
- }
- if (Action == MENU_DRAW) // Update display
- {
- cUiListCalc(VarsUi.Slots,&VarsUi.SlotCenter,&VarsUi.SlotLeft,&VarsUi.SlotRight);
-
- pMapDisplay->pBitmaps[BITMAP_2] = (BMPMAP*)VarsUi.PortBitmapLeft;
- pMapDisplay->pBitmaps[BITMAP_3] = (BMPMAP*)VarsUi.PortBitmapCenter;
- pMapDisplay->pBitmaps[BITMAP_4] = (BMPMAP*)VarsUi.PortBitmapRight;
-
- VarsUi.Tmp = VarsUi.SlotLeft;
- if (cUiBTCommand(UI_BT_GET_CONNECTION_VALID,NULL,&VarsUi.Tmp,NULL) == UI_BT_SUCCES)
- {
- cUiBTCommand(UI_BT_GET_CONNECTION_TYPE,NULL,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- cUiDrawPortNo(VarsUi.PortBitmapLeft,MENUICON_LEFT,VarsUi.Tmp);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_2);
- }
- else
- {
- pMapDisplay->pMenuIcons[MENUICON_LEFT] = (UBYTE*)&Connections->Data[VarsUi.Tmp * Connections->ItemPixelsX * (Connections->ItemPixelsY / 8)];
- }
-
- VarsUi.Tmp = VarsUi.SlotCenter;
- cUiBTCommand(UI_BT_GET_CONNECTION_NAME,NULL,&VarsUi.Tmp,VarsUi.DisplayBuffer);
- pMapDisplay->EraseMask |= TEXTLINE_BIT(TEXTLINE_5);
- pMapDisplay->pMenuText = VarsUi.DisplayBuffer;
-
- if (cUiBTCommand(UI_BT_GET_CONNECTION_VALID,NULL,&VarsUi.Tmp,NULL) == UI_BT_SUCCES)
- {
- cUiBTCommand(UI_BT_GET_CONNECTION_TYPE,NULL,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- cUiDrawPortNo(VarsUi.PortBitmapCenter,MENUICON_CENTER,VarsUi.Tmp);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_3);
- }
- else
- {
- pMapDisplay->pMenuIcons[MENUICON_CENTER] = (UBYTE*)&Connections->Data[VarsUi.Tmp * Connections->ItemPixelsX * (Connections->ItemPixelsY / 8)];
- }
- VarsUi.Tmp = VarsUi.SlotRight;
- if (cUiBTCommand(UI_BT_GET_CONNECTION_VALID,NULL,&VarsUi.Tmp,NULL) == UI_BT_SUCCES)
- {
- cUiBTCommand(UI_BT_GET_CONNECTION_TYPE,NULL,&VarsUi.Tmp,&VarsUi.DeviceType);
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = (UBYTE*)&Devices->Data[VarsUi.DeviceType * Devices->ItemPixelsX * (Devices->ItemPixelsY / 8)];
- cUiDrawPortNo(VarsUi.PortBitmapRight,MENUICON_RIGHT,VarsUi.Tmp);
- pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_4);
- }
- else
- {
- pMapDisplay->pMenuIcons[MENUICON_RIGHT] = (UBYTE*)&Connections->Data[VarsUi.Tmp * Connections->ItemPixelsX * (Connections->ItemPixelsY / 8)];
- }
- pMapDisplay->EraseMask &= ~SCREEN_BIT(SCREEN_LARGE);
- pMapDisplay->EraseMask |= MENUICON_BITS;
- pMapDisplay->UpdateMask |= (MENUICON_BITS | SPECIAL_BIT(FRAME_SELECT) | SPECIAL_BIT(MENUTEXT));
- }
- if (Action == MENU_EXIT)
- {
- IOMapUi.State = EXIT_PRESSED;
- VarsUi.State = 0;
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* cUiPowerOffTime ****************************************************
-
-UBYTE cUiPowerOffTime(UBYTE Action) // MENU_INIT,MENU_LEFT,MENU_RIGHT,MENU_EXIT
-{
- switch (Action)
- {
- case MENU_INIT : // Init time counter and cursor bitmap
- {
- VarsUi.Counter = VarsUi.NVData.PowerdownCode + 1;
-
- VarsUi.pTmp = (UBYTE*)Cursor;
- for (VarsUi.Tmp = 0;(VarsUi.Tmp < SIZE_OF_CURSOR) && (VarsUi.Tmp < (UBYTE)SIZEOF_DATA(Cursor));VarsUi.Tmp++)
- {
- VarsUi.CursorTmp[VarsUi.Tmp] = *VarsUi.pTmp;
- VarsUi.pTmp++;
- }
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_LEFT : // Dec
- {
- cUiListLeft(POWER_OFF_TIME_STEPS,&VarsUi.Counter);
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_RIGHT : // Inc
- {
- cUiListRight(POWER_OFF_TIME_STEPS,&VarsUi.Counter);
- Action = MENU_DRAW;
- }
- break;
-
- case MENU_ENTER : // Enter
- {
- VarsUi.NVData.PowerdownCode = VarsUi.Counter - 1;
- cUiNVWrite();
- IOMapUi.SleepTimeout = PowerOffTimeSteps[VarsUi.NVData.PowerdownCode];
- Action = MENU_EXIT;
- }
- break;
-
- }
-
- if (Action == MENU_DRAW)
- {
- if (VarsUi.Counter > 1)
- {
- sprintf((char*)VarsUi.DisplayBuffer,"%u",(UWORD)PowerOffTimeSteps[VarsUi.Counter - 1]);
- }
- else
- {
- sprintf((char*)VarsUi.DisplayBuffer,(char*)cUiGetString(TXT_POWEROFFTIME_NEVER));
- }
- pMapDisplay->pTextLines[TEXTLINE_3] = VarsUi.DisplayBuffer;
-
- pMapDisplay->pBitmaps[BITMAP_1] = (BMPMAP*)VarsUi.CursorTmp;
- VarsUi.CursorTmp[4] = 46;
- VarsUi.CursorTmp[5] = 24;
- pMapDisplay->EraseMask |= (TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4));
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= (TEXTLINE_BIT(TEXTLINE_3) | BITMAP_BIT(BITMAP_1));
- }
- if (Action == MENU_EXIT)
- {
- IOMapUi.State = EXIT_PRESSED;
- }
-
- return (0);
-}
-
-
-
-//******* cUiBTConnectRequest ************************************************
-
-UBYTE cUiBTConnectRequest(UBYTE Action)
-{
- switch (Action)
- {
- case MENU_INIT :
- {
- switch (VarsUi.CRState)
- {
- case 0 :
- {
- sprintf((char*)pMapSound->SoundFilename,"%s.%s",(char*)UI_ATTENTION_SOUND,(char*)TXT_FILE_EXT[FILETYPE_SOUND]);
- pMapSound->Volume = IOMapUi.Volume;
- pMapSound->Mode = SOUND_ONCE;
- pMapSound->Flags |= SOUND_UPDATE;
- VarsUi.CRState++;
- }
- break;
-
- case 1 :
- {
- if (DISPLAY_IDLE)
- {
- pMapDisplay->Flags |= DISPLAY_POPUP;
- VarsUi.CRState++;
- }
- }
- break;
-
- case 2 :
- {
- strcpy((char*)VarsUi.UserString,(char*)DEFAULT_PIN_CODE);
- IOMapUi.Flags |= UI_REDRAW_STATUS;
- VarsUi.CRState++;
- }
- break;
-
- case 3 : // Get pincode and send
- {
- if (!cUiGetUserString(0))
- {
- if (VarsUi.UserString[0] == 0)
- {
- sprintf((char*)VarsUi.UserString,"%08lX",VarsUi.CRPasskey);
- }
- pMapComm->pFunc2(VarsUi.UserString);
- VarsUi.CRState++;
- }
- }
- break;
-
- case 4 :
- {
- if (DISPLAY_IDLE)
- {
- pMapDisplay->Flags &= ~DISPLAY_POPUP;
- VarsUi.CRState = 0;
- }
- }
- break;
-
- }
- }
- break;
-
- }
-
- return (VarsUi.CRState);
-}
-
-
-
-//******* cUiFilesDelete *****************************************************
-
-UBYTE cUiFilesDelete(UBYTE Action)
-{
- switch (Action)
- {
- case MENU_INIT :
- {
- pMapDisplay->pTextLines[TEXTLINE_3] = cUiGetString(TXT_FILESDELETE_DELETING_ALL);
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_3);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_3);
- sprintf((char*)VarsUi.DisplayBuffer,(char*)cUiGetString(TXT_FILESDELETE_S_FILES),(char*)cUiGetString(TXT_FILETYPE[VarsUi.SelectedType]));
- pMapDisplay->pTextLines[TEXTLINE_4] = VarsUi.DisplayBuffer;
- pMapDisplay->TextLinesCenterFlags |= TEXTLINE_BIT(TEXTLINE_4);
- pMapDisplay->UpdateMask |= TEXTLINE_BIT(TEXTLINE_4);
- IOMapUi.State = TEST_BUTTONS;
- }
- break;
-
- case MENU_DELETE :
- {
- switch (VarsUi.State)
- {
- case 0 :
- {
- if (VarsUi.SelectedType < FILETYPES)
- {
- sprintf((char*)VarsUi.FilenameBuffer,"*.%s",TXT_FILE_EXT[VarsUi.SelectedType]);
- }
- else
- {
- sprintf((char*)VarsUi.FilenameBuffer,"*.*");
- }
- VarsUi.State++;
- }
- break;
-
- case 1 :
- {
- if (SOUND_IDLE == pMapSound->State)
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 2 : // Delete files
- {
- VarsUi.TmpHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FilenameBuffer,VarsUi.SelectedFilename,&VarsUi.TmpLength);
- if (!(VarsUi.TmpHandle & 0x8000))
- {
- pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.TmpHandle,NULL,NULL);
- pMapLoader->pFunc(DELETE,VarsUi.SelectedFilename,NULL,NULL);
- }
- else
- {
- pMapDisplay->EraseMask |= MENUICON_BITS;
- pMapDisplay->EraseMask |= SPECIAL_BIT(MENUTEXT);
- VarsUi.State++;
- }
- }
- break;
-
- default : // Display Files deleted text
- {
- if (!cUiFeedback((BMPMAP*)Info,TXT_FB_FD_FILES_INFO,TXT_FB_FD_DELETED_INFO,DISPLAY_SHOW_TIME))
- {
- IOMapUi.State = EXIT_PRESSED;
- VarsUi.State = 0;
- }
- }
- break;
-
- }
- }
- break;
-
- default :
- {
- if (Action < FILETYPES)
- {
- VarsUi.SelectedType = Action;
- }
- else
- {
- VarsUi.SelectedType = FILETYPE_ALL;
- }
- }
- break;
-
- }
-
- return (VarsUi.State);
-}
-
-
-//******* cUiOff *************************************************************
-
-UBYTE cUiOff(UBYTE Action) // Tell AVR to turn off ARM
-{
- if (Action == MENU_INIT)
- {
- switch (VarsUi.State)
- {
- case 0 : // Stop VM if running
- {
- if (pMapCmd->ProgStatus == PROG_RUNNING)
- {
- pMapCmd->DeactivateFlag = TRUE;
- }
- VarsUi.State++;
- }
- break;
-
- case 1 : // When VM is stopped -> Display off and close all connections
- {
- if (pMapCmd->ProgStatus != PROG_RUNNING)
- {
- pMapDisplay->Flags &= ~DISPLAY_ON;
- VarsUi.BTCommand = (UBYTE)DISCONNECTALL;
- VarsUi.BTPar1 = (UBYTE)0;
- VarsUi.BTPar2 = (UBYTE)0;
- pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult));
- VarsUi.State++;
- }
- }
- break;
-
- case 2 : // Send off command to AVR
- {
- if (VarsUi.BTResult != INPROGRESS)
- {
- pMapIoCtrl->PowerOn = POWERDOWN;
- VarsUi.Timer = 0;
- VarsUi.State++;
- }
- }
- break;
-
- case 3 : // Wait for power off
- {
- if (++VarsUi.Timer >= ARM_WAIT_FOR_POWER_OFF)
- {
- VarsUi.State++;
- }
- }
- break;
-
- case 4 : // Vitual off state (if still power) wait for on button
- {
- pMapIoCtrl->PowerOn = 0;
- if (BUTTON_ENTER == cUiReadButtons())
- {
- VarsUi.State++;
- }
- }
- break;
-
- default : // Turn on again
- {
- IOMapUi.State = INIT_DISPLAY;
- VarsUi.State = 0;
- }
- break;
-
- }
- }
-
- return (VarsUi.State);
-}
-
-
-
-//******* FUNCTIONS **********************************************************
-
-enum FUNC_NO // Must reffer to entry in Functions
-{ // used in Menus to repressent function
- FUNC_NO_NOT_USED = 0x00,
- FUNC_NO_TEST_PROGRAM = 0x01,
- FUNC_NO_OFF = 0x02,
- FUNC_NO_BT_ON = 0x03,
- FUNC_NO_POWER_OFF_TIME = 0x04,
- FUNC_NO_FILES_DELETE = 0x05,
- FUNC_NO_FILE_LIST = 0x06,
- FUNC_NO_VOLUME = 0x07,
- FUNC_NO_FILE_RUN = 0x08,
- FUNC_NO_FILE_DELETE = 0x09,
- FUNC_NO_FREE1 = 0x0A,
- FUNC_NO_ON_BRICK_PROGRAMMING = 0x0B,
- FUNC_NO_FREE2 = 0x0C,
- FUNC_NO_BT_CONNECT_REQUEST = 0x0D,
- FUNC_NO_VIEW = 0x0E,
- FUNC_NO_GET_USER_STRING = 0x0F,
- FUNC_NO_BT_CONNECT = 0x10,
- FUNC_NO_BT_VISIABILITY = 0x11,
- FUNC_NO_BT_SEARCH = 0x12,
- FUNC_NO_BT_DEVICE_LIST = 0x13,
- FUNC_NO_BT_CONNECT_LIST = 0x14,
- FUNC_NO_MAX
-};
-
-FUNCTION Functions[] = // Use same index as FUNC_NO
-{
- 0,
- TestPrg,
- cUiOff,
- cUiBtOn,
- cUiPowerOffTime,
- cUiFilesDelete,
- cUiFileList,
- cUiVolume,
- cUiFileRun,
- cUiFileDelete,
- cUiDataLogging,
- cUiOnBrickProgramming,
- 0,
- cUiBTConnectRequest,
- cUiView,
- cUiGetUserString,
- cUiBtConnect,
- cUiBtVisiability,
- cUiBtSearch,
- cUiBtDeviceList,
- cUiBtConnectList
-};
-
-