//
//
define DEVICENAMESIZE 120 // Max characters for device name
define SIZE 500
//
// MAIN ************************************************************************************************
//
define TEST_STARTX 16 //
define TEST_STARTY 11 //
define TEST_LINE_STARTX 40 //
define TEST_LINE_STARTY 21 //
define TEST_LINE_SPACEY 17 //
define TEST_TEXT_STARTX 24 //
define TEST_TEXT_STARTY 36 //
define TEST_TEXT_SIZEX 131 //
define TEST_TEXT_SIZEY 86 //
define TEST_TEXT_SPACEY 10 //
define TEST_CURSOR_STARTX 21 //
define TEST_CURSOR_STARTY 35 //
define TEST_CURSOR_WIDTH 127 //
define TEST_CURSOR_HEIGHT 14 //
define TEST_ICON_STARTX 24 //
define TEST_ICON_STARTY 19 //
define TEST_ICON_SPACEY 17 //
define TEST_SEPAR_STARTX 21 //
define TEST_SEPAR_ENDX 154 //
//
vmthread MAIN // void MAIN(void)
{ // {
DATA16 Tmp //
DATA16 TmpY //
DATA16 Line //
DATA16 Ypos //
DATA16 Yipos //
DATAS Text 24 //
DATAS Textbox SIZE //
//
UI_DRAW(TOPLINE,1) // UI_DRAW(TOPLINE,1)
UI_WRITE(LED,LED_GREEN) // UI_WRITE(LED,LED_GREEN)
UI_BUTTON(SET_BACK_BLOCK,1) // UI_BUTTON(SET_BACK_BLOCK,1)
//
UI_DRAW(SELECT_FONT,NORMAL_FONT) // UI_DRAW(SELECT_FONT,NORMAL_FONT)
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Sound') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Leds') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Motors') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Power') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Sensors') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Gyro') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'IR seeker') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Calibrate') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Change Name') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'IR remote') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'IR channel') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'IR ch Beacon') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'IR seek new ') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Display ') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Performance ') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'DaisyChain ') // UI_WRITE(TEXTBOX_APPEND,Textbox,SIZE,DEL_CRLF,'Text')
//
// do
Loop: // {
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(TEST_LINE_STARTY,Ypos) // Ypos = TEST_LINE_STARTY
MOVE16_16(TEST_ICON_STARTY,Yipos) // Yipos = TEST_ICON_STARTY
//
// Draw headline icon //
UI_DRAW(ICON,FG_COLOR,TEST_ICON_STARTX,Yipos,NORMAL_ICON,ICON_SETTINGS)// UI_DRAW(ICON,FG_COLOR,TEST_ICON_STARTX,Yipos,NORMAL_ICON,ICON_SETTINGS)
ADD16(Yipos,TEST_ICON_SPACEY,Yipos) // Yipos += TEST_ICON_SPACEY
//
// Draw headline //
ADD16(8,TEST_LINE_STARTX,Tmp) // Tmp = TEST_LINE_STARTX + 8
UI_DRAW(SELECT_FONT,SMALL_FONT) // UI_DRAW(SELECT_FONT,SMALL_FONT)
UI_DRAW(TEXT,FG_COLOR,Tmp,Ypos,'Test') // UI_DRAW(TEXT,FG_COLOR,Tmp,Ypos,'Test')
UI_DRAW(SELECT_FONT,NORMAL_FONT) // UI_DRAW(SELECT_FONT,NORMAL_FONT)
ADD16(Ypos,TEST_LINE_SPACEY,Ypos) // Ypos += TEST_LINE_SPACEY
//
// Draw separator line //
SUB16(Ypos,5,TmpY) // TmpY = Ypos - 5
UI_DRAW(LINE,FG_COLOR,TEST_SEPAR_STARTX,TmpY,TEST_SEPAR_ENDX,TmpY) // UI_DRAW(LINE,FG_COLOR,TEST_SEPAR_STARTX,TmpY,TEST_SEPAR_ENDX,TmpY)
//
MOVE16_16(-1,Line) // Line = -1
TEST_TEXT_SIZEY,Textbox,SIZE,DEL_CRLF,Line) //
//
JR_NEQ16(Line,1,Not1) // if (Line == 1)
// {
CALL(TestSound) // CALL(TestSound)
//
Not1: // }
//
JR_NEQ16(Line,2,Not2) // if (Line == 2)
// {
CALL(TestLeds) // CALL(TestLeds)
//
Not2: // }
//
JR_NEQ16(Line,3,Not3) // if (Line == 3)
// {
CALL(TestMotors) // CALL(TestMotors)
//
Not3: // }
//
JR_NEQ16(Line,4,Not4) // if (Line == 4)
// {
CALL(TestPower) // CALL(TestPower)
//
Not4: // }
//
JR_NEQ16(Line,5,Not5) // if (Line == 5)
// {
CALL(TestSensors) // CALL(TestSensors)
//
Not5: // }
//
JR_NEQ16(Line,6,Not6) // if (Line == 6)
// {
CALL(TestGyro) // CALL(TestGyro)
//
Not6: // }
//
JR_NEQ16(Line,7,Not7) // if (Line == 7)
// {
CALL(TestIRseek) // CALL(TestIRseek)
//
Not7: // }
//
JR_NEQ16(Line,8,Not8) // if (Line == 8)
// {
CALL(CalibScreen) // CALL(CalibScreen)
//
Not8: // }
//
JR_NEQ16(Line,9,Not9) // if (Line == 9)
// {
CALL(ChangeBrickname) // CALL(ChangeBrickname)
//
Not9: // }
//
JR_NEQ16(Line,10,Not10) // if (Line == 10)
// {
CALL(TestIRseekRemote) // CALL(TestIRseek)
//
Not10: // }
//
JR_NEQ16(Line,11,Not11) // if (Line == 11)
// {
CALL(TestIRRemote) // CALL(TestIRseek)
//
Not11: // }
//
JR_NEQ16(Line,12,Not12) // if (Line == 12)
// {
CALL(TestIRbeacon) // CALL(TestIRbeacon)
//
Not12: // }
//
JR_NEQ16(Line,13,Not13) // if (Line == 13)
// {
CALL(TestIRseekNew) // CALL(TestIRseekNew)
//
Not13: // }
//
JR_NEQ16(Line,14,Not14) // if (Line == 14)
// {
CALL(TestDisplay) // CALL(TestDisplay)
//
Not14: // }
//
JR_NEQ16(Line,15,Not15) // if (Line == 15)
// {
CALL(TestPerformance) // CALL(TestPerformance)
//
Not15: // }
//
JR_NEQ16(Line,16,Not16) // if (Line == 16)
// {
CALL(TestDaisy) // CALL(TestDaisy)
//
Not16: // }
//
// }
JR_NEQ16(Line,-1,Loop) // while (Line != -1)
} // }
//
//
// Test Sound ******************************************************************************************
//
define SOUND_STARTX 17 //
define SOUND_STARTY 10 //
define SOUND_TEXTX 24 //
define SOUND_TEXTY 18 //
define SOUND_SPACEY 14 //
//
subcall TestSound // void TestSound(void)
{ // {
DATA32 Timer //
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TESTING SOUND:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'A sound should') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'be played and') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'when finished') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'a tone for 1/2') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'second : repeat') //
UI_DRAW(UPDATE) //
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
SOUND(PLAY,100,'Test') // SOUND(PLAY,100,"Test")
// do
Loop2: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
SOUND_TEST(Busy) // SOUND_TEST(Busy)
// }
JR_TRUE(Busy,Loop2) // while (Busy)
//
SOUND(TONE,30,470,500) // SOUND(TONE,30,470,500)
//
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// do
Loop3: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
SOUND_TEST(Busy) // SOUND_TEST(Busy)
// }
JR_TRUE(Busy,Loop3) // while (Busy)
//
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
SOUND(BREAK) // SOUND(BREAK)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test Leds *******************************************************************************************
//
define LEDS_STARTX 17 //
define LEDS_STARTY 10 //
define LEDS_TEXTX 24 //
define LEDS_TEXTY 18 //
define LEDS_SPACEY 14 //
//
define LEDS_DELAY 40 //
//
subcall TestLeds // void TestLeds(void)
{ // {
DATA32 Timer //
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Red //
DATA8 Green //
DATA8 State //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(LEDS_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,'TESTING LEDS: ') //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,'LEFT - Green') //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,'RIGHT - Red ') //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,' ') //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,' ') //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
UI_BUTTON(PRESSED,LEFT_BUTTON,State) //
JR_FALSE(State,NotGreen) // if (State)
// {
UI_BUTTON(PRESSED,RIGHT_BUTTON,State) //
JR_FALSE(State,NotRed1) // if (State)
// {
UI_WRITE(LED,LED_ORANGE) //
//
JR(EndRed1) // }
// else
NotRed1: // {
//
UI_WRITE(LED,LED_GREEN) //
//
EndRed1: // }
//
JR(EndGreen) // }
// else
NotGreen: // {
//
UI_BUTTON(PRESSED,RIGHT_BUTTON,State) //
JR_FALSE(State,NotRed2) // if (State)
// {
UI_WRITE(LED,LED_RED) //
//
JR(EndRed2) // }
// else
NotRed2: // {
//
UI_WRITE(LED,LED_BLACK) //
//
EndRed2: // }
//
EndGreen: // }
//
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
UI_WRITE(LED,LED_GREEN) // UI_WRITE(LED,LED_GREEN)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
} // }
//
//
// Test Motors *****************************************************************************************
//
define MOTORS_STARTX 17 //
define MOTORS_STARTY 10 //
define MOTORS_TEXTX 24 //
define MOTORS_TEXTY 18 //
define MOTORS_SPACEY 14 //
//
subcall TestMotors // void TestMotors(void)
{ // {
DATA32 Timer //
DATA16 Ypos //
DATA8 Tmp //
DATA8 Busy //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(MOTORS_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,MOTORS_TEXTX,Ypos,'TESTING MOTORS:') //
ADD16(Ypos,MOTORS_SPACEY,Ypos) //
ADD16(Ypos,MOTORS_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,MOTORS_TEXTX,Ypos,'4 motors plugged') //
ADD16(Ypos,MOTORS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,MOTORS_TEXTX,Ypos,'Motors should') //
ADD16(Ypos,MOTORS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,MOTORS_TEXTX,Ypos,'ramp up and down') //
ADD16(Ypos,MOTORS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,MOTORS_TEXTX,Ypos,'forward and back') //
ADD16(Ypos,MOTORS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,MOTORS_TEXTX,Ypos,'ward one by one') //
UI_DRAW(UPDATE) //
//
//
OUTPUT_STEP_POWER(0,1,100,360,0,360,1) // OUTPUT_STEP_POWER(0,1,100,360,0,360,1)
// do
Loop11: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,1,Busy) // OUTPUT_TEST(0,1,Busy)
// }
JR_TRUE(Busy,Loop11) // while (Busy)
//
OUTPUT_STEP_POWER(0,1,-100,360,0,360,1) // OUTPUT_STEP_POWER(0,1,-100,360,0,360,1)
// do
Loop12: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,1,Busy) // OUTPUT_TEST(0,1,Busy)
// }
JR_TRUE(Busy,Loop12) // while (Busy)
//
//
OUTPUT_STEP_POWER(0,2,100,360,0,360,1) // OUTPUT_STEP_POWER(0,2,100,360,0,360,1)
// do
Loop21: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,2,Busy) // OUTPUT_TEST(0,2,Busy)
// }
JR_TRUE(Busy,Loop21) // while (Busy)
//
OUTPUT_STEP_POWER(0,2,-100,360,0,360,1) // OUTPUT_STEP_POWER(0,2,-100,360,0,360,1)
// do
Loop22: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,2,Busy) // OUTPUT_TEST(0,2,Busy)
// }
JR_TRUE(Busy,Loop22) // while (Busy)
//
//
OUTPUT_STEP_POWER(0,4,100,360,0,360,1) // OUTPUT_STEP_POWER(0,4,100,360,0,360,1)
// do
Loop31: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,4,Busy) // OUTPUT_TEST(0,4,Busy)
// }
JR_TRUE(Busy,Loop31) // while (Busy)
//
OUTPUT_STEP_POWER(0,4,-100,360,0,360,1) // OUTPUT_STEP_POWER(0,4,-100,360,0,360,1)
// do
Loop32: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,4,Busy) // OUTPUT_TEST(0,4,Busy)
// }
JR_TRUE(Busy,Loop32) // while (Busy)
//
//
OUTPUT_STEP_POWER(0,8,100,360,0,360,1) // OUTPUT_STEP_POWER(0,8,100,360,0,360,1)
// do
Loop41: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,8,Busy) // OUTPUT_TEST(0,8,Busy)
// }
JR_TRUE(Busy,Loop41) // while (Busy)
//
OUTPUT_STEP_POWER(0,8,-100,360,0,360,1) // OUTPUT_STEP_POWER(0,8,-100,360,0,360,1)
// do
Loop42: // {
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_TRUE(Tmp,Stop) // break out and goto stop
OUTPUT_TEST(0,8,Busy) // OUTPUT_TEST(0,8,Busy)
// }
JR_TRUE(Busy,Loop42) // while (Busy)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
// Test Power ******************************************************************************************
//
define POWER_STARTX 17 //
define POWER_STARTY 10 //
define POWER_TEXTX 24 //
define POWER_TEXTY 18 //
//
subcall TestPower // void TestPower(void)
{ // {
DATA32 Timer //
DATA16 Ypos //
DATA8 Tmp //
DATA8 Fwd //
DATA8 Count //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE8_8(0,Fwd) //
//
// do
Loop: // {
NotFwd:
EndFwd:
NoChange:
//
//
//
CALL(ShowPower,POWER_TEXTX,POWER_TEXTY) //
//
// Free VM to other stuff //
TIMER_WAIT(250,Timer) // TIMER_WAIT(250,Timer)
TIMER_READY(Timer) // TIMER_READY(Timer)
//
// Loop until "ENTER" //
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
// }
JR_FALSE(Tmp,Loop) // while (!Tmp)
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test Power ******************************************************************************************
//
subcall ShowPower // void ShowPower(X,Y)
{ // {
IN_16 X
IN_16 Y
DATAF Tbatt
DATAF Vbatt
DATAF Isys
DATAF Iout
DATAF Ibatt
DATAF Iint
DATAF Pbatt
DATA16 Xpos
DATA16 Ypos
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'BATTERY:') //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'V') //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'A') //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'I') //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'W') //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'C') //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'MOTORS:') //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'A') //
// Update display //
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
} // }
//
//
// Test Sensors ****************************************************************************************
//
/*
128 x 112
25 12
1234567890123456789012345 Ycur Xcur
P1 P2 P3 P4
O1 xxxx xxxx xxxx xxxx 0 0 1 2 3
I1 xxxx xxxx xxxx xxxx 1
O1 xxxx xxxx xxxx xxxx 2
I1 xxxx xxxx xxxx xxxx 3
O1 xxxx xxxx xxxx xxxx 4
I1 xxxx xxxx xxxx xxxx 5
O1 xxxx xxxx xxxx xxxx 6
I1 xxxx xxxx xxxx xxxx 7
*/
subcall SensorMap
{
IN_16 Xcur
IN_16 Ycur
OUT_8 Layer
OUT_8 Port
NotOut:
}
define SENS_STARTX 34
define SENS_STARTY 31
define SENS_SPACEX 32
define SENS_SPACEY 11
define PTEXT_STARTX SENS_STARTX
define PTEXT_STARTY 18
define PTEXT_SPACEX SENS_SPACEX
define LTEXT_STARTX 20
define LTEXT_STARTY SENS_STARTY
define LTEXT_SPACEY SENS_SPACEY
define SENS_CURSOR_WIDTH 27
define SENS_CURSOR_HEIGHT 9
subcall TestSensors // void TestSensors(void)
{ // {
DATA32 Timer //
DATA32 Time
DATA32 TimeOld
DATAF DataF
DATA16 Xpoi
DATA16 Ypoi
DATA16 Xpos
DATA16 Ypos
DATA16 Ycur
DATA16 Xcur
DATA16 Inc
DATA8 Tmp
DATA8 Layer
DATA8 Port
DATA8 Figures
DATA8 Decimals
DATA8 Update
// do
Loop: // {
NoTimeout:
// Control Xcur
NoHorz:
NotTooLowX:
NotTooHighX:
// Control Ycur
NoVert:
NotTooLowY:
NotTooHighY:
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
// Show port number
// Show layer number
// Show values //
UpdateY:
UpdateX:
// Show cursor
// Update display //
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
NoUpdate:
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
NotEnter:
//
// Loop until "BACK" //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
// }
JR_FALSE(Tmp,Loop) // while (!Tmp)
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
subcall ReadPort
{
OUT_F Data
IN_8 Layer
IN_8 Port
OUT_8 Figures
OUT_8 Decimals
}
define DATA_STARTX 20
define DATA_STARTY 17
define DATA_SPACEX 0
define DATA_SPACEY 9
define DATA_SPACEY2 4
subcall SensorShow
{
IN_8 Layer
IN_8 Port
DATA8 Tmp
DATA8 Mode
DATA32 Timer //
DATA32 Raw
DATAF Si
DATAF SiMin
DATAF SiMax
DATAF DataF
DATA16 Xpos
DATA16 Ypos
DATA16 Inc
DATA8 Pct
DATA8 Type
DATA8 Connection
DATA8 Datasets
DATA8 Format
DATA8 SetMode
DATA8 Modes
DATA8 Views
DATA8 Figures
DATA8 Decimals
DATAS Name 12
DATAS Symbol 5
// do
Loop: // {
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
// Get sensor modes
ModeOk:
// Set sensor mode
// Get sensor info
/*
1234567890123456789012345
1 Name = nnnnnnnnnnn sss
2 Type = ttt Mode = m
3 Conn = ccc
4 Modes = m Views = v
5 Datasets = d Format = f
6 Figures = f Dec. = d
7
8 Raw = rrrrrrrrrrrrr
9 Pct = pppp
10 Si = f.d
11
12 SiMin = f.d
13 SiMax = f.d
*/
// Show sensor info
// Update display //
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
// Control SetMode
NotTooLowMode:
NotTooHighMode:
// Loop until "BACK" //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
// }
JR_FALSE(Tmp,Loop) // while (!Tmp)
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
// Test Gyro *******************************************************************************************
//
subcall TestGyro //
{ //
DATA32 Timer //
DATAF Tmp1
DATAF Tmp2
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TESTING GYRO:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test IRseek *****************************************************************************************
//
subcall TestIRseek //
{ //
DATA32 Timer //
DATAF Tmp1
DATAF Tmp2
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TESTING IR SEEK:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test IRseek remote **********************************************************************************
//
subcall TestIRseekRemote //
{ //
DATA32 Timer //
DATAF Tmp1
DATAF Tmp2
DATAF Tmp3
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
DATA8 Channel //
ARRAY8 Data 3
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TESTING IR SEEK:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
//
MOVE8_8(1,Run) // Run = 1
MOVE8_8(1,Channel) // Channel = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,UP_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,UP_BUTTON,Tmp)
JR_FALSE(Tmp,NotUpButton) // if (Tmp != FALSE)
// {
HighEnough:
NotUpButton: // }
UI_BUTTON(SHORTPRESS,DOWN_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,DOWN_BUTTON,Tmp)
JR_FALSE(Tmp,NotDownButton) // if (Tmp != FALSE)
// {
LowEnough:
NotDownButton: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test IRseek remote **********************************************************************************
//
subcall TestIRRemote //
{ //
DATA32 Timer //
DATAF Tmp1
DATAF Tmp2
DATAF Tmp3
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
DATA8 Channel //
ARRAY8 Data 3
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TEST IR CHANNEL:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
//
MOVE8_8(1,Run) // Run = 1
MOVE8_8(1,Channel) // Channel = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,UP_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,UP_BUTTON,Tmp)
JR_FALSE(Tmp,NotUpButton) // if (Tmp != FALSE)
// {
HighEnough:
NotUpButton: // }
UI_BUTTON(SHORTPRESS,DOWN_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,DOWN_BUTTON,Tmp)
JR_FALSE(Tmp,NotDownButton) // if (Tmp != FALSE)
// {
LowEnough:
NotDownButton: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test IR beacon **************************************************************************************
//
subcall TestIRbeacon //
{ //
DATA32 Timer //
DATAF Tmp1
DATAF Tmp2
DATAF Tmp3
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
DATA8 Channel //
ARRAY8 Data 3
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TEST IR CHANNEL:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
//
MOVE8_8(1,Run) // Run = 1
MOVE8_8(1,Channel) // Channel = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,UP_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,UP_BUTTON,Tmp)
JR_FALSE(Tmp,NotUpButton) // if (Tmp != FALSE)
// {
HighEnough:
NotUpButton: // }
UI_BUTTON(SHORTPRESS,DOWN_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,DOWN_BUTTON,Tmp)
JR_FALSE(Tmp,NotDownButton) // if (Tmp != FALSE)
// {
LowEnough:
NotDownButton: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test IRseekNew **************************************************************************************
//
subcall TestIRseekNew //
{ //
DATA32 Timer //
DATAF Tmp1
DATAF Tmp2
DATAF Tmp3
DATAF Tmp4
DATAF Tmp5
DATAF Tmp6
DATAF Tmp7
DATAF Tmp8
DATA16 Ypos //
DATA16 YposSave
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TEST IRseek New:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// TestDisplay *****************************************************************************************
//
//
subcall TestDisplay // void TestDisplay(void)
{ // {
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(LEDS_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,'TEST DISPLAY: ') //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,'LEFT - B-W ') //
ADD16(Ypos,LEDS_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,LEDS_TEXTX,Ypos,'RIGHT - W-B ') //
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp)
JR_FALSE(Tmp,NotLeftButton) // if (Tmp != FALSE)
// {
UI_DRAW(FILLWINDOW,0x00,0,0
UI_DRAW(FILLWINDOW,0x55,0,0
NotLeftButton: // }
UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,Tmp)
JR_FALSE(Tmp,NotRightButton) // if (Tmp != FALSE)
// {
UI_DRAW(FILLWINDOW,0x00,0,0
UI_DRAW(FILLWINDOW,0xAA,0,0
NotRightButton: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_DRAW(RESTORE,0) // UI_DRAW(RESTORE,0)
} // }
//
//
// ChangeBrickname *************************************************************************************
//
define NAME_STARTX 16 //
define NAME_STARTY 19 //
//
subcall ChangeBrickname // void ChangeBrickname(void)
{ // {
DATA8 State //
DATAS String BRICKNAMESIZE //
MOVE8_8(CHARSET_NAME,State) // State = CHARSET_NAME
UI_DRAW(KEYBOARD,FG_COLOR,NAME_STARTX,NAME_STARTY,ICON_NONE,BRICKNAMESIZE,'Brick Name',State,String)// UI_DRAW(KEYBOARD,FG_COLOR,KEYBOARD_STARTX,KEYBOARD_STARTY,ICON_KEY,BRICKNAMESIZE,'Brick Name',State,String)
NoString:
} // }
//
//
// CalibScreen *****************************************************************************************
//
define CALIB_STARTX 17 //
define CALIB_STARTY 12 //
define CALIB_LINE_STARTX 24 //
define CALIB_LINE_STARTY 20 //
define CALIB_LINE_SPACEY 13 //
define CALIB_LINES 8 //
define CALIB_CURSOR_STARTX 23 //
define CALIB_CURSOR_STARTY 19 //
define CALIB_CURSOR_WIDTH 132 //
define CALIB_CURSOR_HEIGHT 11 //
//
subcall CalibScreen // void CalibScreen(void)
{ // {
DATA16 Xpos //
DATA16 Ypos //
DATA16 Line //
DATA16 Cursor //
DATA16 CursorX //
DATA16 CursorY //
DATA16 Inc //
DATA8 Run //
DATA8 Tmp //
//
MOVE8_8(1,Run) // Run = 1
MOVE16_16(0,Cursor) // Cursor = 0
// do
Loop: // {
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_DRAW(RESTORE,0) // UI_DRAW(RESTORE,0)
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
// Show lines //
MOVE16_16(CALIB_LINE_STARTX,Xpos) //
MOVE16_16(CALIB_LINE_STARTY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'Gyro ') //
ADD16(Ypos,CALIB_LINE_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'Color ') //
ADD16(Ypos,CALIB_LINE_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'Nxt Color ') //
ADD16(Ypos,CALIB_LINE_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'IR seeker ') //
ADD16(Ypos,CALIB_LINE_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'Gyro Turntable ') //
ADD16(Ypos,CALIB_LINE_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,' ') //
ADD16(Ypos,CALIB_LINE_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'Device ') //
ADD16(Ypos,CALIB_LINE_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,Xpos,Ypos,'Test US ping ') //
//
// Show cursor //
MUL16(Cursor,CALIB_LINE_SPACEY,CursorY) //
ADD16(CursorY,CALIB_CURSOR_STARTY,CursorY) //
UI_DRAW(INVERSERECT,CALIB_CURSOR_STARTX,CursorY,CALIB_CURSOR_WIDTH,CALIB_CURSOR_HEIGHT) //
//
// Update display //
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
UI_BUTTON(GET_VERT,Inc) //
ADD16(Cursor,Inc,Cursor) //
JR_GTEQ16(Cursor,0,HighEnough) //
MOVE16_16(CALIB_LINES,Cursor) //
SUB16(Cursor,1,Cursor) //
HighEnough: //
JR_LT16(Cursor,CALIB_LINES,LowEnough) //
MOVE16_16(0,Cursor) //
LowEnough: //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
JR_NEQ16(Cursor,0,Not0) // if (Cursor == 0)
// {
CALL(CalibGyro) // CALL(CalibGyro)
Not0: // }
JR_NEQ16(Cursor,1,Not1) // if (Cursor == 1)
// {
CALL(CalibColor) // CALL(CalibColor)
Not1: // }
JR_NEQ16(Cursor,2,Not2) // if (Cursor == 2)
// {
CALL(TestNxtColor) // CALL(TestNxtColor)
Not2: // }
JR_NEQ16(Cursor,3,Not3) // if (Cursor == 3)
// {
CALL(CalibIRseeker) // CALL(CalibIRseeker)
Not3: // }
JR_NEQ16(Cursor,4,Not4) // if (Cursor == 4)
// {
CALL(CalibTurntable) // CALL(CalibTurntable)
Not4: // }
JR_NEQ16(Cursor,5,Not5) // if (Cursor == 5)
// {
Not5: // }
JR_NEQ16(Cursor,6,Not6) // if (Cursor == 6)
// {
CALL(CalibDevice) // CALL(CalibDevice)
Not6: // }
JR_NEQ16(Cursor,7,Not7) // if (Cursor == 7)
// {
CALL(TestUSPing) // CALL(TestUSPing)
Not7: // }
NotEnterButton: // }
// }
JR_TRUE(Run,Loop) // while (Run)
} // }
//
//
// CalibGyro *******************************************************************************************
//
define GYRO_TYPE 32 //
define GYRO_NORMAL 0 //
define GYRO_CALIB 4 //
define GYRO_PORT 0 //
//
//
subcall CalibGyro // void CalibGyro(void)
{ // {
DATA32 Timer //
DATAF Value1 //
DATAF Value2 //
DATAF Value3 //
DATAF Value4 //
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Type //
DATA8 Mode //
DATA8 Calibrating //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'CALIBRATE GYRO: ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'Sensor in port 1') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'LEFT backward') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'RIGHT forward') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'BACK quit ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
//
CheckType: //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'----- BUSY -----') //
UI_DRAW(UPDATE) //
INPUT_DEVICE(GET_TYPEMODE,0,GYRO_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,GYRO_PORT,Type,Mode)
JR_EQ8(Type,GYRO_TYPE,TypeOk) //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) //
JR_TRUE(Tmp,Stop) //
JR(CheckType) //
TypeOk:
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIB. MODE - ') //
UI_DRAW(UPDATE) //
CheckBusy:
Ready:
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp)
JR_FALSE(Tmp,NotLeftButton) // if (Tmp != FALSE)
// {
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
INPUT_WRITE(0,GYRO_PORT,14,'LEGO-FAC-CAL-1') //
NotLeftButton: // }
//
//
UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,Tmp)
JR_FALSE(Tmp,NotRightButton) // if (Tmp != FALSE)
// {
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
INPUT_WRITE(0,GYRO_PORT,14,'LEGO-FAC-CAL-2') //
NotRightButton: // }
//
// JR_FALSE(Calibrating,NotCalib)
// INPUT_TEST(0,GYRO_PORT,Tmp)
// JR_TRUE(Tmp,Waiting)
UI_DRAW(UPDATE) //
Waiting:
NotCalib:
//
INPUT_DEVICE(GET_TYPEMODE,0,GYRO_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,GYRO_PORT,Type,Mode)
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
//
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
INPUT_DEVICE(GET_TYPEMODE,0,GYRO_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,GYRO_PORT,Type,Mode)
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- NORMAL MODE - ') //
UI_DRAW(UPDATE) //
INPUT_DEVICE(READY_RAW,0,GYRO_PORT,0,GYRO_NORMAL,1,Value1) //
Skip:
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// CalibColor ******************************************************************************************
//
define COLOR_TYPE 29 //
define COLOR_NORMAL 0 //
define COLOR_CALIB 5 //
define COLOR_PORT 1 //
//
//
subcall CalibColor // void CalibColor(void)
{ // {
DATA32 Timer //
DATAF Value1 //
DATAF Value2 //
DATAF Value3 //
DATAF Value4 //
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Type //
DATA8 Mode //
DATA8 Calibrating //
DATA8 Calib //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'CALIBRATE COLOR:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'Sensor in port 2') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'LEFT calibrate') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'BACK quit ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
//
CheckType: //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'----- BUSY -----') //
UI_DRAW(UPDATE) //
INPUT_DEVICE(GET_TYPEMODE,0,COLOR_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,COLOR_PORT,Type,Mode)
JR_EQ8(Type,COLOR_TYPE,TypeOk) //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) //
JR_TRUE(Tmp,Stop) //
JR(CheckType) //
TypeOk:
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIB. MODE - ') //
UI_DRAW(UPDATE) //
CheckBusy:
Ready:
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp)
JR_FALSE(Tmp,NotLeftButton) // if (Tmp != FALSE)
// JR_FALSE(Calib,NotLeftButton)
// {
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' CALIBRATING ') //
UI_DRAW(UPDATE) //
INPUT_WRITE(0,COLOR_PORT,14,'LEGO-FAC-CAL-1') //
NotLeftButton: // }
//
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
Waiting:
NotCalib:
INPUT_DEVICE(GET_TYPEMODE,0,COLOR_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,COLOR_PORT,Type,Mode)
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
//
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
INPUT_DEVICE(GET_TYPEMODE,0,COLOR_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,COLOR_PORT,Type,Mode)
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- NORMAL MODE - ') //
UI_DRAW(UPDATE) //
INPUT_DEVICE(READY_RAW,0,COLOR_PORT,0,COLOR_NORMAL,1,Value1) //
Skip:
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// CalibIRseeker ***************************************************************************************
//
define SEEK_TYPE 33 //
define SEEK_NORMAL 0 //
define SEEK_CALIB 5 //
define SEEK_PORT 1 //
//
//
subcall CalibIRseeker // void CalibIRseeker(void)
{ // {
DATA32 Timer //
DATAF Value1 //
DATAF Value2 //
DATAF Value3 //
DATAF Value4 //
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Type //
DATA8 Mode //
DATA8 Calibrating //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'CALIB IRseeker:') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'Sensor in port 2') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'LEFT backward') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'RIGHT forward') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'BACK quit ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
//
CheckType: //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'----- BUSY -----') //
UI_DRAW(UPDATE) //
INPUT_DEVICE(GET_TYPEMODE,0,SEEK_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,SEEK_PORT,Type,Mode)
JR_EQ8(Type,SEEK_TYPE,TypeOk) //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) //
JR_TRUE(Tmp,Stop) //
JR(CheckType) //
TypeOk:
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIB. MODE - ') //
UI_DRAW(UPDATE) //
CheckBusy:
Ready:
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp)
JR_FALSE(Tmp,NotLeftButton) // if (Tmp != FALSE)
// {
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(UPDATE) //
INPUT_WRITE(0,SEEK_PORT,14,'LEGO-FAC-CAL-1') //
NotLeftButton: // }
SecondTime:
//
//
//
UI_DRAW(UPDATE) //
Waiting:
//
INPUT_DEVICE(GET_TYPEMODE,0,SEEK_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,SEEK_PORT,Type,Mode)
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
//
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
INPUT_DEVICE(GET_TYPEMODE,0,SEEK_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,SEEK_PORT,Type,Mode)
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- NORMAL MODE - ') //
UI_DRAW(UPDATE) //
INPUT_DEVICE(READY_RAW,0,SEEK_PORT,0,SEEK_NORMAL,1,Value1) //
Skip:
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// CalibTurntable **************************************************************************************
/*
Control program for turntable testing the MS gyro sensor.
Ports: Input1 = Gyro sensor under test
Input2 = Touch sensor for starting the test
OutputA = Brake actuator and ON-relay
OutputB = Start-relay and Reverse-relay
OutputD = PASS and FAIL lamps
Time EV3 action
---------------------------------------------------------------------------------------
- Wait for touch sensor on Input2
0 OutputB = OFF (FLOAT)
OutputD = OFF (FLOAT)
BRAKE OutputA = FW 100%
Wait 1.0 sec (to be sure that the turntable is completely stopped)
1 ZEROING Send init calibration to gyro sensor
Wait 1.0 sec
1.5 ON OutputA = BW 100%
Wait 0.5 sec
2 ACTIVATE CW OutputB = FW 100%
Wait 0.5 sec
2.5 RELEASE CW OutputB = FLOAT
CALIB CW Send calib command
Wait 2.0 sec
4.5 ACTIVATE CCW OutputB = BW 100%
Wait 0.5 sec
5 RELEASE CCW OutputB = FLOAT
CALIB CCW Send calib command
Wait 0.5 sec
5.5 READ CALIB Wait until result not equal zero or 1.7 sec
7 ACTIVATE STOP OutputB = FW 100%
Wait 0.5 sec
7.5 RELEASE STOP OutputB = FLOAT
Wait 0.5 sec
8 OFF OutputA = FLOAT
If sensor is OK then OutputD = FW 100% PASS light is on
If sensor is not OK then OutputD = BW 100% FAIL light is on
*/
//
define TT_GYRO_PORT 0 //
define TT_TOUCH_PORT 1 //
define TT_BRAKE_PORT 1 //
define TT_MOTOR_PORT 2 //
define TT_LAMP_PORT 8 //
//
define TT_GYRO_TYPE 32 //
define TT_GYRO_NORMAL 0 //
define TT_GYRO_CALIB 4 //
//
subcall CalibTurntable // void CalibTurntable(void)
{ // {
DATA32 Timer //
DATA32 Time //
DATAF Value1 //
DATAF Value2 //
DATAF Value3 //
DATA32 Data32 //
DATA16 Ypos //
DATA8 Run //
DATA8 Type //
DATA8 Mode //
DATA8 State //
DATA8 Tmp //
//
//
OUTPUT_STOP(0,TT_LAMP_PORT,0) //
Repeat: //
// Stop all outputs //
OUTPUT_STOP(0,TT_BRAKE_PORT,0) //
OUTPUT_STOP(0,TT_MOTOR_PORT,0) //
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'CALIBRATE GYRO: ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'1.Connect sensor') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'2.Press button ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'3.Do not touch ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' turntable while') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' calibrating ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,8,Ypos) //
//
CheckType: //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'----- BUSY -----') //
UI_DRAW(UPDATE) //
INPUT_DEVICE(GET_TYPEMODE,0,TT_GYRO_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,TT_GYRO_PORT,Type,Mode)
JR_EQ8(Type,TT_GYRO_TYPE,TypeOk) //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) //
JR_TRUE(Tmp,Stop) //
JR(CheckType) //
TypeOk: //
//
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- PRESS BUTTON -') //
UI_DRAW(UPDATE) //
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
MOVE8_8(0,State) // State = 0
MOVE8_8(1,Run) // Run = 1
//
// do
Loop: // {
JR_NEQ8(0,State,Not0) // if (State == 0)
// {
// Wait for touch sensor on Input2 //
INPUT_DEVICE(READY_PCT,0,TT_TOUCH_PORT,0,0,1,Tmp) // INPUT_DEVICE(READY_PCT,0,TT_TOUCH_PORT,0,0,1,Tmp)
JR_EQ8(Tmp,0,NoStart) // if (Tmp)
// {
// Show state text //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIB. MODE -') //
UI_DRAW(UPDATE) //
//
// BRAKE //
//
// Motor off //
OUTPUT_STOP(0,TT_MOTOR_PORT,0) //
// Lamp off //
OUTPUT_STOP(0,TT_LAMP_PORT,0) //
// Brake on //
OUTPUT_POWER(0,TT_BRAKE_PORT,100) //
OUTPUT_START(0,TT_BRAKE_PORT) //
// Wait 1000 mS //
TIMER_WAIT(1000,Timer) //
TIMER_READY(Timer) //
//
// ZEROING //
//
// Select calibration mode //
INPUT_DEVICE(READY_SI,0,TT_GYRO_PORT,0,TT_GYRO_CALIB,2,Value1,Value2)//
// Wait 1000 mS //
TIMER_WAIT(1000,Timer) //
TIMER_READY(Timer) //
//
MOVE8_8(1,State) // State = 1
//
NoStart: // }
Not0: // }
//
JR_NEQ8(1,State,Not1) // if (State == 1)
// {
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'--- TURN CW ---') //
UI_DRAW(UPDATE) //
//
// ON //
//
// Brake off //
OUTPUT_POWER(0,TT_BRAKE_PORT,-100) //
OUTPUT_START(0,TT_BRAKE_PORT) //
// Wait 500 mS //
TIMER_WAIT(500,Timer) //
TIMER_READY(Timer) //
//
// ACTIVATE CW //
//
// Turntable CW //
OUTPUT_POWER(0,TT_MOTOR_PORT,100) //
OUTPUT_START(0,TT_MOTOR_PORT) //
// Wait 500 mS //
TIMER_WAIT(500,Timer) //
TIMER_READY(Timer) //
//
// RELEASE CW //
//
// Turntable CW //
OUTPUT_STOP(0,TT_MOTOR_PORT,0) //
//
// CALIB CW //
//
// Show state text //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIBRATE CW -') //
UI_DRAW(UPDATE) //
// Send calib command //
INPUT_WRITE(0,TT_GYRO_PORT,14,'LEGO-FAC-CAL-1') //
// Wait 50 mS //
TIMER_WAIT(50,Timer) //
TIMER_READY(Timer) //
//
// Send calib command //
INPUT_WRITE(0,TT_GYRO_PORT,14,'LEGO-FAC-CAL-1') //
// Wait 2000 mS //
TIMER_WAIT(2000,Timer) //
TIMER_READY(Timer) //
//
MOVE8_8(2,State) // State = 2
//
Not1: // }
//
JR_NEQ8(2,State,Not2) // if (State == 2)
// {
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'--- TURN CCW ---') //
UI_DRAW(UPDATE) //
//
// ACTIVATE CCW //
//
// Turntable CCW //
OUTPUT_POWER(0,TT_MOTOR_PORT,-100) //
OUTPUT_START(0,TT_MOTOR_PORT) //
// Wait 500 mS //
TIMER_WAIT(500,Timer) //
TIMER_READY(Timer) //
//
// RELEASE CCW //
//
// Turntable CCW //
OUTPUT_STOP(0,TT_MOTOR_PORT,0) //
//
// CALIB CCW //
//
// Show state text //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIBRATE CCW-') //
UI_DRAW(UPDATE) //
// Send calib command //
INPUT_WRITE(0,TT_GYRO_PORT,14,'LEGO-FAC-CAL-2') //
// Wait 50 mS //
TIMER_WAIT(50,Timer) //
TIMER_READY(Timer) //
//
// Send calib command //
INPUT_WRITE(0,TT_GYRO_PORT,14,'LEGO-FAC-CAL-2') //
// Wait 500 mS //
TIMER_WAIT(500,Timer) //
TIMER_READY(Timer) //
//
// READ CALIB //
//
ReadLoop:
// Read values //
INPUT_DEVICE(READY_SI,0,TT_GYRO_PORT,0,TT_GYRO_CALIB,3,Value1,Value2,Value3) //
Wait:
ReadEnd:
// Show values //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') //
UI_DRAW(VALUE,FG_COLOR,24,Ypos,Value1,4,0) //
UI_DRAW(VALUE,FG_COLOR,64,Ypos,Value2,4,0) //
UI_DRAW(VALUE,FG_COLOR,104,Ypos,Value3,4,0) //
UI_DRAW(UPDATE) //
//
MOVE8_8(3,State) // State = 3
Not2: // }
//
JR_NEQ8(3,State,Not3) // if (State == 3)
// {
// ACTIVATE STOP //
//
// Turntable stop //
OUTPUT_POWER(0,TT_MOTOR_PORT,100) //
OUTPUT_START(0,TT_MOTOR_PORT) //
// Wait 500 mS //
TIMER_WAIT(500,Timer) //
TIMER_READY(Timer) //
//
// RELEASE STOP //
//
// Turntable stop //
OUTPUT_STOP(0,TT_MOTOR_PORT,0) //
// Wait 500 mS //
TIMER_WAIT(500,Timer) //
TIMER_READY(Timer) //
//
// OFF //
//
// Brake float //
OUTPUT_STOP(0,TT_BRAKE_PORT,0) //
//
// EVALUATE RESULT //
//
Ok:
// Green lamp on //
OUTPUT_POWER(0,TT_LAMP_PORT,100) //
OUTPUT_START(0,TT_LAMP_PORT) //
NotOk:
// Red lamp on //
OUTPUT_POWER(0,TT_LAMP_PORT,-100) //
OUTPUT_START(0,TT_LAMP_PORT) //
OkEnd:
//
MOVE8_8(4,State) // State = 4
Not3: // }
//
JR_NEQ8(4,State,Not4) // if (State == 4)
// {
// Wait for touch sensor on Input2 //
INPUT_DEVICE(READY_PCT,0,TT_TOUCH_PORT,0,0,1,Tmp) // INPUT_DEVICE(READY_PCT,0,TT_TOUCH_PORT,0,0,1,Tmp)
JR_NEQ8(Tmp,0,Repeat) // if (Tmp)
//
Not4: // }
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NoEscape) // if (TmP)
// {
MOVE8_8(0,Run) // Run = 0
//
NoEscape: // }
// }
JR_TRUE(Run,Loop) // while (Run)
//
Stop: //
//
// Stop all outputs //
OUTPUT_STOP(0,TT_BRAKE_PORT,0) //
OUTPUT_STOP(0,TT_MOTOR_PORT,0) //
OUTPUT_STOP(0,TT_LAMP_PORT,0) //
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// TestUSPing ******************************************************************************************
//
//
define US_TYPE 30 //
define US_NORMAL 0 //
define US_PING 3 //
define US_PORT 1 //
//
//
subcall TestUSPing // void TestUSPing
{ // {
DATAF Tmp
DATAF Count
DATA32 Timer
DATA8 Busy
DATA8 State
UI_DRAW(FILLWINDOW,BG_COLOR,0,0) // UI_DRAW(FILLWINDOW,BG_COLOR,0,0)
Loop:
Wait:
UI_BUTTON(SHORTPRESS,BACK_BUTTON,State) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,State)
Stop:
} // }
//
//
// CalibDevice *****************************************************************************************
//
define DEVICE_TYPE 0 //
define DEVICE_NORMAL 0 //
define DEVICE_PORT 1 //
define DATA32_MAX (2147483647) //
//
//
subcall CalibDevice // void CalibDevice(void)
{ // {
DATA32 Timer //
DATA32 Min //
DATA32 Max //
DATAF Value1 //
DATAF Value2 //
DATA16 Ypos //
DATA8 Run //
DATA8 Pct //
DATA8 Tmp //
DATA8 Type //
DATA8 Mode //
DATAS Symbol 4 //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
//
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'CALIBRATE-DEVICE') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'Sensor in port 2') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'LEFT minimum') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'RIGHT maximum') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'ENTER default') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'BACK quit ') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,6,Ypos) //
//
CheckType: //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'----- BUSY -----') // UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'----- BUSY -----')
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
INPUT_TEST(0,DEVICE_PORT,Tmp) //
JR_FALSE(Tmp,TypeOk) //
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) //
JR_TRUE(Tmp,Stop) //
JR(CheckType) //
TypeOk: //
//
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIB. MODE - ') // UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'- CALIB. MODE - ')
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
MOVE32_32(DATA32_MAX,Min) // Min = DATA32_MAX
MOVE32_32(DATA32_MAX,Max) // Max = DATA32_MAX
TIMER_WAIT(1000,Timer) // wait(1000)
TIMER_READY(Timer) //
//
INPUT_DEVICE(GET_TYPEMODE,0,DEVICE_PORT,Type,Mode) // INPUT_DEVICE(GET_TYPEMODE,0,DEVICE_PORT,Type,Mode)
//
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') // UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ')
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
//
//!
// CALIBRATE MIN AND MAX EXAMPLE
UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,LEFT_BUTTON,Tmp)
JR_FALSE(Tmp,NotLeftButton) // if (Tmp != FALSE)
// {
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') // UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ')
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
INPUT_DEVICE(READY_SI,0,DEVICE_PORT,Type,Mode,1,Value1) //
MOVEF_32(Value1,Min) //
//
INPUT_DEVICE(CAL_MIN,Type,Mode,Min) // INPUT_DEVICE(CAL_MIN,Type,Mode,Min)
NotLeftButton: // }
//
UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,Tmp)
JR_FALSE(Tmp,NotRightButton) // if (Tmp != FALSE)
// {
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') // UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ')
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
INPUT_DEVICE(READY_SI,0,DEVICE_PORT,Type,Mode,1,Value1) //
MOVEF_32(Value1,Max) //
//
INPUT_DEVICE(CAL_MAX,Type,Mode,Max) // INPUT_DEVICE(CAL_MAX,Type,Mode,Max)
//
NotRightButton: // }
//
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ') // UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,' ')
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
//!
// CALIBRATE DEFAULT EXAMPLE
//
INPUT_DEVICE(CAL_DEFAULT,Type,Mode) // INPUT_DEVICE(CAL_DEFAULT,Type,Mode)
NotEnterButton: // }
//
TIMER_WAIT(100,Timer) // wait(100)
TIMER_READY(Timer) //
//
INPUT_DEVICE(READY_PCT,0,DEVICE_PORT,Type,Mode,1,Pct) // INPUT_DEVICE(READY_PCT,0,DEVICE_PORT,Type,Mode,1,Pct)
MOVE8_F(Pct,Value1) // Value1 = Pct
UI_DRAW(VALUE,FG_COLOR,24,Ypos,Value1,3,0) //
UI_DRAW(TEXT,FG_COLOR,48,Ypos,'pct') // UI_DRAW(TEXT,FG_COLOR,48,Ypos,'pct')
//
INPUT_DEVICE(GET_SYMBOL,0,DEVICE_PORT,4,Symbol) // INPUT_DEVICE(GET_SYMBOL,0,DEVICE_PORT,4,Symbol)
INPUT_DEVICE(READY_SI,0,DEVICE_PORT,Type,Mode,1,Value2) // INPUT_DEVICE(READY_SI,0,DEVICE_PORT,Type,Mode,1,Value2)
UI_DRAW(VALUE,FG_COLOR,80,Ypos,Value2,6,0) // UI_DRAW(VALUE,FG_COLOR,80,Ypos,Value2,6,0)
UI_DRAW(TEXT,FG_COLOR,128,Ypos,Symbol) // UI_DRAW(TEXT,FG_COLOR,128,Ypos,Symbol)
//
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
INPUT_TEST(0,DEVICE_PORT,Tmp) // INPUT_TEST(0,DEVICE_PORT,Tmp)
JR_TRUE(Tmp,CheckType) // if (Tmp) goto CheckType
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
//
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test NxtColor ***************************************************************************************
//
subcall TestNxtColor //
{ //
DATA32 Timer //
DATAF Tmp1
DATAF Tmp2
DATAF Tmp3
DATAF Tmp4
DATA32 Dat1
DATA32 Dat2
DATA32 Dat3
DATA32 Dat4
DATA16 Ypos //
DATA8 Run //
DATA8 Tmp //
DATA8 Busy //
//
//
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE16_16(SOUND_TEXTY,Ypos) //
UI_DRAW(SELECT_FONT,1) //
UI_DRAW(TEXT,FG_COLOR,SOUND_TEXTX,Ypos,'TESTING NXTCOLOR') //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
ADD16(Ypos,SOUND_SPACEY,Ypos) //
UI_DRAW(SELECT_FONT,0) //
//
MOVE8_8(1,Run) // Run = 1
// do
Loop1: // {
/*
INPUT_DEVICE(READY_SI,0,1,0,5,4,Tmp1,Tmp2,Tmp3,Tmp4)
*/
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// }
JR_TRUE(Run,Loop1) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// Test Performance ************************************************************************************
//
define ROTATION_PORT 1 //
define REFLECTED_PORT 2 //
define SONAR_PORT 3 //
//
define LOOPTIME 60000 //
//
subcall TestPerformance // TestPerformance(void)
{ // {
DATA32 Time //
DATA32 OldTime //
DATA32 LoopCount //
DATA32 Data32 //
DATAF DataF //
DATAF Rotation //
DATAF Reflected //
DATAF Sonar //
DATAF SensorSum //
DATAF Random //
DATAF IDisplay //
DATA8 Speed //
DATA8 SpeedA //
//
MOVE8_8(0,SpeedA) //
MOVE32_32(0,LoopCount) // LoopCount = 0
TIMER_READ(OldTime) // TIMER_READ(OldTime)
//
Loop:
NotGt:
NotLt:
LoopEnd:
} //
//
//
// Test Daisy ******************************************************************************************
//
define SENSOR_LAYER 1 //
define SENSOR_PORT 1 //
//
//
subcall TestDaisy // TestDaisy(void)
{ // {
DATAF Value1
DATAF Value2
DATAF Value3
DATA8 Tmp
DATA8 Run //
// Show popup //
UI_DRAW(BMPFILE,FG_COLOR,TEST_STARTX,TEST_STARTY,'144x116_POP6') // Draw bitmap
MOVE8_8(1,Run) // Run = 1
// do
Loop: // {
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Tmp)
JR_FALSE(Tmp,NotBackButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotBackButton: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,Tmp)
JR_FALSE(Tmp,NotEnterButton) // if (Tmp != FALSE)
// {
MOVE8_8(0,Run) // Run = 0
NotEnterButton: // }
// }
JR_TRUE(Run,Loop) // while (Run)
Stop: //
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
// *****************************************************************************************************
//
/*