2018.07.26
Dependencies: TextLCD USBDevice mbed-rtos mbed
2_main.cpp
- Committer:
- sayzyas
- Date:
- 2018-07-26
- Revision:
- 2:d0a5ee4e7bb8
- Parent:
- 1:368ba89c2e6b
File content as of revision 2:d0a5ee4e7bb8:
#include "mbed.h" #include "USBHID.h" #include "USBSerial.h" #include "rtos.h" #include "common.h" #include "TextLCD.h" //#include "TextLCD.h" //We declare a USBHID device. By default input and output reports are 64 bytes long. USBHID hid(8, 8); //USBSerial serial; Serial pc(USBTX, USBRX); // UART // I2C i2c(p9, p10); // I2C SDA, SCL I2CSlave slave(p9, p10); //I2C SDA SCL //This report will contain data to be sent HID_REPORT send_report; HID_REPORT recv_report; DigitalOut led1(LED1); // 1: on, 0: off DigitalOut led2(LED2); // 1: on, 0: off DigitalOut led3(LED3); // 1: on, 0: off DigitalOut led4(LED4); // 1: on, 0: off // LED indicator DigitalOut led_ind0(p13); DigitalOut led_ind1(p14); DigitalOut led_ind2(p15); DigitalOut led_ind3(p25); DigitalOut led_ind4(p26); DigitalOut led_ind5(p27); DigitalOut led_ind6(p28); DigitalOut led_ind7(p8); // Switch Matrix 3bit SW ON = 0 input // bit 2 1 0 Send data // 0 1 1 1 : // 1 1 1 0 : 0x01 RF Tfm K // 2 1 0 1 : 0x02 RF Tfm I // 3 1 0 0 : 0x04 LB Tfm K // 4 0 1 1 : 0x08 LB Tfm I // 5 0 1 0 : 0x10 Winch Down // 6 0 0 1 : 0x20 Winch Up // 7 0 0 0 : DigitalIn sw1(p5); // Bit 0 DigitalIn sw2(p6); // Bit 1 DigitalIn sw3(p7); // Bit 2 // Digital Input 1:OFF, 0:ON DigitalIn sw_ikmode(p29); // SW: i \ k ,pde ( 1: K, 0: I ) DigitalIn sw_validpart(p30); // SW: CrExp Shape ( 1: Left-Winch. 0: Right-tfmcrwler ) // Analig Joystick input for crawler control //AnalogIn js_l_ud(p20); // Crawler L-UD //AnalogIn js_l_lr(p19); // Crawler L-LR //AnalogIn js_r_ud(p17); // Crawler R-UD //AnalogIn js_r_lr(p16); // Crawler R-LR AnalogIn js_l_ud(p19); // Crawler L-UD AnalogIn js_l_lr(p20); // Crawler L-LR AnalogIn js_r_ud(p16); // Crawler R-UD AnalogIn js_r_lr(p17); // Crawler R-LR uint8_t js_center_value_r_ud = 0x80; uint8_t js_center_value_r_lr = 0x80; uint8_t js_center_value_l_ud = 0x80; uint8_t js_center_value_l_lr = 0x80; void led_demo(void); uint8_t calc_motor_speed( uint8_t data, int32_t dir ); void lcd_out( int, int, char* ); void lcd_out2( int column, int row, char* msg, int cnt); void calibrate_joystick( int mode, uint8_t data_ud, uint8_t data_lr ); TextLCD lcd(p11, p12, p24, p23, p22, p21); // rs, e, d4-d7 int i2c_saddress = 0; // void led_winch_valid( int counter ) { if( counter < 25) { led_ind0 = 0; led_ind1 = 0; led_ind2 = 0; led_ind3 = 0; } else { led_ind0 = 1; led_ind1 = 1; led_ind2 = 1; led_ind3 = 1; } } void led_crawler_valid( int counter ) { if( counter < 25) { led_ind4 = 0; led_ind5 = 0; led_ind6 = 0; led_ind7 = 0; } else { led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; } } // LED demo void led_demo() { int i; for( i = 0; i < 7; i++ ) { led_ind0 = 1; led_ind1 = 1; led_ind2 = 1; led_ind3 = 1; led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; led1 = 1; // on led2 = 0; // off led3 = 0; // off led4 = 0; // off Thread::wait(15); led_ind0 = 0; led_ind1 = 0; led_ind2 = 0; led_ind3 = 0; led_ind4 = 0; led_ind5 = 0; led_ind6 = 0; led_ind7 = 0; led1 = 0; // off led2 = 1; // on led3 = 0; // off led4 = 0; // off Thread::wait(15); led_ind0 = 1; led_ind1 = 1; led_ind2 = 1; led_ind3 = 1; led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; led1 = 0; // off led2 = 0; // off led3 = 1; // on led4 = 0; // off Thread::wait(15); led_ind0 = 0; led_ind1 = 0; led_ind2 = 0; led_ind3 = 0; led_ind4 = 0; led_ind5 = 0; led_ind6 = 0; led_ind7 = 0; led1 = 0; // off led2 = 0; // off led3 = 0; // off led4 = 1; // on Thread::wait(15); led_ind0 = 1; led_ind1 = 1; led_ind2 = 1; led_ind3 = 1; led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; led1 = 0; // off led2 = 0; // off led3 = 0; // off led4 = 0; // off } } // ***************************************************************** // calibration joystick data // ***************************************************************** void calibrate_joystick( int mode, uint8_t data_ud, uint8_t data_lr ){ uint16_t tmp; if( mode == 0 ) { tmp = (uint16_t)js_center_value_r_ud; tmp += (uint16_t)data_ud; tmp /= 2; js_center_value_r_ud = (uint8_t)tmp; tmp = (uint16_t)js_center_value_r_lr; tmp += (uint16_t)data_lr; tmp /= 2; js_center_value_r_lr = (uint8_t)tmp; } else { tmp = (uint16_t)js_center_value_l_ud; tmp += (uint16_t)data_ud; tmp /= 2; js_center_value_l_ud = (uint8_t)tmp; tmp = (uint16_t)js_center_value_l_lr; tmp += (uint16_t)data_lr; tmp /= 2; js_center_value_l_lr = (uint8_t)tmp; } } // ***************************************************************** // calcuilation motor speed // ***************************************************************** uint8_t calc_motor_speed( uint8_t data, int32_t dir ){ uint8_t speed; if( dir == 0 ){ // speed = (data - js_center_value) * 100 / js_center_value; if( speed > 95 ) speed = 100; } else{ // speed = (js_center_value - data) * 100 / js_center_value; if( speed > 95 ) speed = 100; } return speed; } // ***************************************************************** // switch control task // ---------------------- // // Up: center -> 255 // Down: 002 -> center // Right: center -> 255 // Left : 0 -> center // // ***************************************************************** void sw_task( void const *){ char msg[16]; uint16_t js_rud_data; uint16_t js_rlr_data; uint8_t js_rud_undata; uint8_t js_rlr_undata; uint16_t js_lud_data; uint16_t js_llr_data; uint8_t js_lud_undata; uint8_t js_llr_undata; float motor_speed_f = 0; uint8_t motor_speed = 0; send_report.length = 8; send_report.data[0] = 0x80; // L JoyStick Left/Right send_report.data[1] = 0x80; // L JoyStick Up/Down send_report.data[2] = 0x80; // R JoyStick Left/Right^ send_report.data[3] = 0x80; // R JoyStick Up/Down send_report.data[4] = 0x00; // Operatiuon Switch // Data Bytes // 7 6 5 4 3 2 1 0 // +-+-+-+-+-+----+----+----+----+ // |-|-|-|-|-|LB-I|LB-K|RF-I|RF-K| // +-+-+-+-+-+----+----+----+----+ send_report.data[5] = 0x00; // JS mode switch // Command Bit // 7 6 5 4 3 2 1 0 // +-+-+-+-+-+-+---+----+ // |-|-|-|-|-|-|S/D|I/KO| // +-+-+-+-+-+-+---+----+ // 1:S 1:KO <--- sw off // 0:D 0:I <--- sw on send_report.data[6] = 0x00; // No Function send_report.data[7] = 0x00; // No Function send_report.data[8] = 0x00; DEBUG_PRINT_L1("Calibrating joystick ... "); // for( int i = 0; i < CALIBRATION_COUNT; i++){ for( int i = 0; i < 10; i++){ js_rud_data = js_r_ud.read_u16(); js_rlr_data = js_r_lr.read_u16(); js_rud_undata = (uint8_t)(js_rud_data >> 8); js_rlr_undata = (uint8_t)(js_rlr_data >> 8); calibrate_joystick( 0, js_rud_undata, js_rlr_undata); // Under constraction js_lud_data = js_l_ud.read_u16(); js_llr_data = js_l_lr.read_u16(); js_lud_undata = (uint8_t)(js_lud_data >> 8); js_llr_undata = (uint8_t)(js_llr_data >> 8); calibrate_joystick( 1, js_lud_undata, js_llr_undata); // Under constraction } DEBUG_PRINT_L1("done\r\n"); while(1){ js_rud_data = js_r_ud.read_u16(); js_rlr_data = js_r_lr.read_u16(); js_lud_data = js_l_ud.read_u16(); js_llr_data = js_l_lr.read_u16(); js_rud_undata = (uint8_t)(js_rud_data >> 8); js_rlr_undata = (uint8_t)(js_rlr_data >> 8); js_lud_undata = (uint8_t)(js_lud_data >> 8); js_llr_undata = (uint8_t)(js_llr_data >> 8); DEBUG_PRINT_L1("Handy> "); DEBUG_PRINT_L1("R:%03d/%3d,%03d/%3d ", js_rud_undata, js_center_value_r_ud, js_rlr_undata, js_center_value_r_ud ); DEBUG_PRINT_L1("L:%03d/%3d,%03d/%3d ", js_lud_undata, js_center_value_l_ud, js_llr_undata, js_center_value_l_ud ); DEBUG_PRINT_L1("SW: %d %d %d ", sw1.read(), sw2.read(), sw3.read() ); DEBUG_PRINT_L1("JS: %d %d\r\n", sw_ikmode.read(), sw_validpart.read() ); // --------------------------------------------- // Right JoyStick Control // --------------------------------------------- // Down // if( js_rud_undata > (js_center_value_r_ud + DEAD_ZONE_BAND_WIDTH) ){ if( js_rud_undata > (js_center_value_r_ud + 5) ){ // Crawler Forward Run led4 = 1; motor_speed = calc_motor_speed( js_rud_undata, 0 ); send_report.data[3] = 255 - js_rud_undata; // speed DEBUG_PRINT_L2("Handy> R-JS Up: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_rud_undata, send_report.data[3], js_center_value_r_ud); if ( sw_validpart == 0 ){ //------------123 45 -------------------- sprintf(msg, "F%03d", send_report.data[3]); lcd_out2(6,1,msg,4); } led4 = 0; } // Up // else if( js_rud_undata < (js_center_value_r_ud - DEAD_ZONE_BAND_WIDTH) ){ else if( js_rud_undata < (js_center_value_r_ud - 5) ){ // Crawler Reverse Run led4 = 1; motor_speed = calc_motor_speed( js_rud_undata, 1 ); send_report.data[3] = 255 - js_rud_undata; // speed DEBUG_PRINT_L2("Handy> R-JS Down: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_rud_undata, send_report.data[3], js_center_value_r_ud); if ( sw_validpart == 0 ){ //-----------123456789 123456-------------------- sprintf(msg, "B%03d", send_report.data[3]); lcd_out2(6,1,msg,4); } led4 = 0; } else{ send_report.data[3] = 0x80; // speed // calibrate_joystick(js_ud_un); // Under constraction led4 = 0; } // Right // if( js_rlr_undata > (js_center_value_r_ud + DEAD_ZONE_BAND_WIDTH) ){ if( js_rlr_undata > (js_center_value_r_ud + 5) ){ // Crawler Forward Run led4 = 1; motor_speed = calc_motor_speed( js_rlr_undata, 0 ); send_report.data[2] = js_rlr_undata; // speed DEBUG_PRINT_L2("Handy> R-JS Right: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_rlr_undata, send_report.data[2], js_center_value_r_ud); if ( sw_validpart == 0 ){ //-----------123456789 123456-------------------- sprintf(msg,"R%03d", send_report.data[2]); lcd_out2(6,1,msg,4); } led4 = 0; } // Left // else if( js_rlr_undata < (js_center_value_r_ud - DEAD_ZONE_BAND_WIDTH) ){ else if( js_rlr_undata < (js_center_value_r_ud - 5) ){ // Crawler Reverse Run led4 = 1; motor_speed = calc_motor_speed( js_rlr_undata, 1 ); send_report.data[2] = js_rlr_undata; // speed DEBUG_PRINT_L2("Handy> R-JS Left: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_rlr_undata, send_report.data[2], js_center_value_r_ud); if ( sw_validpart == 0 ){ //-----------123456789 123456-------------------- sprintf(msg,"L%03d", send_report.data[2]); lcd_out2(6,1,msg,4); } led4 = 0; } else{ send_report.data[2] = 0x80; // speed // calibrate_joystick(js_ud_un); // Under constraction led4 = 0; } if( ( send_report.data[2] == 0x80 ) && ( send_report.data[3] == 0x80 ) ){ lcd_out2(6,1," ",4); } // --------------------------------------------- // Left JoyStick Control // --------------------------------------------- // Down // if( js_lud_undata > (js_center_value_l_ud + DEAD_ZONE_BAND_WIDTH) ){ if( js_lud_undata > (js_center_value_l_ud + 5) ){ // Crawler Forward Run led4 = 1; motor_speed = calc_motor_speed( js_lud_undata, 0 ); send_report.data[1] = 255 - js_lud_undata; // speed DEBUG_PRINT_L2("Handy> L-JS Up: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_lud_undata, send_report.data[1], js_center_value_l_ud); if ( sw_validpart == 0 ){ //-----------123456789 123456-------------------- sprintf(msg,"F%03d", send_report.data[1]); lcd_out2(1,1,msg,4); } led4 = 0; } // Up // else if( js_lud_undata < (js_center_value_l_ud - DEAD_ZONE_BAND_WIDTH) ){ else if( js_lud_undata < (js_center_value_l_ud - 5) ){ // Crawler Reverse Run led4 = 1; motor_speed = calc_motor_speed( js_lud_undata, 1 ); send_report.data[1] = 255 - js_lud_undata; // speed DEBUG_PRINT_L2("Handy> L-JS Down: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_lud_undata, send_report.data[1], js_center_value_l_ud); if ( sw_validpart == 0 ){ //-----------123456789 123456-------------------- sprintf(msg,"B%03d", send_report.data[1]); lcd_out2(1,1,msg,4); } led4 = 0; } else{ send_report.data[1] = 0x80; // speed // calibrate_joystick(js_l_ud_un); // Under constraction led4 = 0; } // Right // if( js_llr_undata > (js_center_value_l_ud + DEAD_ZONE_BAND_WIDTH) ){ if( js_llr_undata > (js_center_value_l_ud + 5) ){ // Crawler Forward Run led4 = 1; motor_speed = calc_motor_speed( js_llr_undata, 0 ); send_report.data[0] = js_llr_undata; // speed DEBUG_PRINT_L2("Handy> L-JS Right: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_llr_undata, send_report.data[0], js_center_value_l_ud); if ( sw_validpart == 0 ){ //-----------123456789 123456-------------------- sprintf(msg,"R%03d", send_report.data[0]); lcd_out2(1,1,msg,4); } led4 = 0; } // Left // else if( js_llr_undata < (js_center_value_l_ud - DEAD_ZONE_BAND_WIDTH) ){ else if( js_llr_undata < (js_center_value_l_ud - 5) ){ // Crawler Reverse Run led4 = 1; motor_speed = calc_motor_speed( js_llr_undata, 1 ); send_report.data[0] = js_llr_undata; // speed DEBUG_PRINT_L2("Handy> L-JS Left: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", js_llr_undata, send_report.data[0], js_center_value_l_ud); if ( sw_validpart == 0 ){ //-----------123456789 123456-------------------- sprintf(msg,"L%03d", send_report.data[0]); lcd_out2(1,1,msg,4); } led4 = 0; } else{ send_report.data[0] = 0x80; // speed // calibrate_joystick(js_l_ud_un); // Under constraction led4 = 0; } if( ( send_report.data[0] == 0x80 ) && ( send_report.data[1] == 0x80 ) ){ lcd_out2(1,1," ",4); } // --------------------------------------------- // Other Switch Control: Pass // --------------------------------------------- if ((sw1 == 0)&&(sw2 == 1)&&(sw3==1)){ led3 = 1; send_report.data[4] = 0x01; // RF Tfm K (Fwd) led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; // 123456 if ( sw_validpart == 0 ) // 0123456789012345 lcd_out2(10,1,"RF[P] ",6); } else if ((sw1 == 1)&&(sw2 == 0)&&(sw3==1)){ send_report.data[4] = 0x02; // RF Tfm I (Rvs) led3 = 1; led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; // 123456 if ( sw_validpart == 0 ) // 0123456789012345 lcd_out2(10,1,"RF[I] ",6); } else if ((sw1 == 0)&&(sw2 == 0)&&(sw3==1)){ send_report.data[4] = 0x04; // LB Tfm K (Fwd) led3 = 1; led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; // 123456 if ( sw_validpart == 0 ) // 0123456789012345 lcd_out2(10,1,"LB[P] ",6); } else if ((sw1 == 1)&&(sw2 == 1)&&(sw3==0)){ led3 = 1; send_report.data[4] = 0x08; // LB Tfm I (Rvs) led_ind4 = 1; led_ind5 = 1; led_ind6 = 1; led_ind7 = 1; // 123456 if ( sw_validpart == 0 ) // 0123456789012345 lcd_out2(10,1,"LB[I] ",6); } else if ((sw1 == 1)&&(sw2 == 0)&&(sw3==0)){ led2 = 1; send_report.data[4] = 0x10; // Winch Down (Fwd) led_ind0 = 1; led_ind1 = 1; led_ind2 = 1; led_ind3 = 1; // 123456 if ( sw_validpart == 1 ) // 0123456789012345 lcd_out2(10,1,"Wch Dn",6); } else if ((sw1 == 0)&&(sw2 == 1)&&(sw3==0)){ led2 = 1; send_report.data[4] = 0x20; // Winch Up (Rvs) led_ind0 = 1; led_ind1 = 1; led_ind2 = 1; led_ind3 = 1; // 123456 if ( sw_validpart == 1 ) // 0123456789012345 lcd_out2(10,1,"Wch Up",6); } else{ send_report.data[4] = 0; /* led_ind0 = 0; led_ind1 = 0; led_ind2 = 0; led_ind3 = 0; led_ind4 = 0; led_ind5 = 0; led_ind6 = 0; led_ind7 = 0; */ led2 = 0; led3 = 0; // 0123456789012345 lcd_out2(10,1," ",6); } // Command Bit // 7 6 5 4 3 2 1 0 // +-+-+-+-+-+-+---+----+ // |-|-|-|-|-|-|S/D|I/KO| // +-+-+-+-+-+-+---+----+ // 1:S 1:KO <--- sw off // 0:D 0:I <--- sw on if( sw_validpart == 1 ){ // sw off send_report.data[5] |= 0x02; // SW off: Winch valid } else{ // sw off send_report.data[5] &= 0xFD; // SW on: Tfm. crawler valid } if( sw_ikmode == 1 ){ // sw off send_report.data[5] |= 0x01; // off: K mode } else{ // sw off send_report.data[5] &= 0xFE; // off: I mode } // ************************* // Send Command to HID host: Hot Plug !! // ************************* hid.send(&send_report); // send command to USB HID host Thread::wait(5); } } void lcd_out( int column, int row, char* msg ){ // lcd.cls(); lcd.locate(column,row); /* for( int i = 0; i < 16; i++ ){ lcd.putc(*msg++); } */ lcd.printf( msg ); Thread::wait(10); } void lcd_out2( int column, int row, char* msg, int cnt){ // lcd.cls(); for( int i = 0; i < cnt; i++ ){ lcd.locate(column+i,row); lcd.putc(*msg++); } // lcd.printf( msg ); Thread::wait(10); } // ********************************************************************** // // Main Function of this program // // ********************************************************************** int main(void) { int32_t counter = 0; char msg[16]; char buf[11]; int i; pc.baud(115200); sw_ikmode.mode( PullUp ); // use internal pullup sw_validpart.mode( PullUp ); // use internal pullup // i2c_saddress = Target_IIC_ADDR; // defined at header i2c_saddress = 0x10; // defined at header i2c_saddress <<= 1; slave.address(i2c_saddress); DEBUG_PRINT_L0("Handy> IIC Address: %02x\r\n",i2c_saddress); lcd_out2(0,0,"B2DebrisSurveyor",16); lcd_out2(0,1,"Revast Co.,Ltd. ",16); led_demo(); lcd_out2(0,0,"Rev1.00 20160218",16); lcd_out2(0,1,"System Booting..",16); DEBUG_PRINT_L0("\r\n"); DEBUG_PRINT_L0("Handy> +-----------------------------------------------------------\r\n"); DEBUG_PRINT_L0("Handy> | Project: Crawler Explorer for 1F-1 PCV internal inspection\r\n"); DEBUG_PRINT_L0("Handy> |---------\r\n"); DEBUG_PRINT_L0("Handy> | This is: Handy Controller main program over USB-HID \r\n"); // DEBUG_PRINT_L0("Handy> | Target MCU: %s\r\n", Targetmbed); DEBUG_PRINT_L0("Handy> | Letest update: %s\r\n", LatestUpDate); DEBUG_PRINT_L0("Handy> | Program Revision: %s\r\n", ProgramRevision); DEBUG_PRINT_L0("Handy> | Author: %s\r\n", Author); DEBUG_PRINT_L0("Handy> | Copyright(C) 2015 %s Allright Reserved\r\n", Company); DEBUG_PRINT_L0("Handy> +-----------------------------------------------------------\r\n"); Thread task1(sw_task, NULL, osPriorityNormal, 256 * 4); // 1234567890123456 lcd_out2(0,0,"Booted up ! ",16); if(hid.readNB(&recv_report)) { //if(hid.read(&recv_report)) { for(int i = 1; i < recv_report.length; i++) { DEBUG_PRINT_L0("%d ", recv_report.data[i]); } DEBUG_PRINT_L0("\r\n"); } // 1234567890123456 lcd_out2(0,0,"B2DebrisProbe ",16); Thread::wait(25); lcd_out2(0,0,"System OK[-] ",16); lcd_out2(0,1," ",16); while (1) { //try to read a msg if(hid.readNB(&recv_report)) { for(int i = 1; i < recv_report.length; i++) { // DEBUG_PRINT("%d ", recv_report.data[i]); // serial.printf("%d ", recv_report.data[i]); } // DEBUG_PRINT("\r\n"); // serial.printf("\r\n"); } // 7 6 5 4 3 2 1 0 // +-+-+-+-+-+-+---+----+ // |-|-|-|-|-|-|S/D|I/KO| // +-+-+-+-+-+-+---+----+ // 1:S 1:KO <--- sw off // 0:D 0:I <--- sw on if (( sw_validpart == 0 )&&( sw_ikmode == 0 )){ // 0123456789012345 // lcd_out2(0,0," [O][X] | JS I ",16); lcd_out2(0,0,"Crawler Inline ",16); led_crawler_valid(counter); led_ind0 = 0; led_ind1 = 0; led_ind2 = 0; led_ind3 = 0; } else if (( sw_validpart == 0 )&&( sw_ikmode == 1 )){ // 0123456789012345 // lcd_out2(0,0," [O][X] | JS K ",16); lcd_out2(0,0,"Crawler Para ",16); led_crawler_valid(counter); led_ind0 = 0; led_ind1 = 0; led_ind2 = 0; led_ind3 = 0; } else if (( sw_validpart == 1 )&&( sw_ikmode == 0 )){ // 0123456789012345 // lcd_out2(0,0," [X][O] | JS I ",16); lcd_out2(0,0,"Winch ",16); led_winch_valid(counter); led_ind4 = 0; led_ind5 = 0; led_ind6 = 0; led_ind7 = 0; } else if (( sw_validpart == 1 )&&( sw_ikmode == 1 )){ // 0123456789012345 // lcd_out2(0,0," [X][O] | JS K ",16); lcd_out2(0,0,"Winch ",16); led_winch_valid(counter); led_ind4 = 0; led_ind5 = 0; led_ind6 = 0; led_ind7 = 0; } #ifdef __UNUSE__ // ---------------------------------------------------------------- // i2c slave read // ---------------------------------------------------------------- i = slave.receive(); slave.read(buf, NumberOfI2CCommand ); /* Read size should be 10bit ?? */ switch (i) { case I2CSlave::NoData: // DEBUG_PRINT_L0("Handy> the slave has not been addressed\r\n"); // lcd_out2(0,0,"System OK[-] ",16); break; case I2CSlave::ReadAddressed: DEBUG_PRINT_L0("Handy> the master has requested a read from this slave\r\n"); slave.write(msg, strlen(msg) + 1); // Includes null char break; case I2CSlave::WriteGeneral: DEBUG_PRINT_L0("Handy> the master is writing to all slave\r\n"); slave.read(buf, NumberOfI2CCommand); DEBUG_PRINT_L0("Handy> Read G: %s\r\n", buf); break; case I2CSlave::WriteAddressed: DEBUG_PRINT_L0("Handy> the master is writing to this slave\r\n"); slave.read(buf, NumberOfI2CCommand); // DEBUG_PRINT_L0("Handy> Read A: %s\r\n", buf); if( buf[5] == 0x01 ){ // lcd_out2(0,0,"System OK[|] ",16); // command } else if( buf[5] == 0x04 ){ // lcd_out2(0,0,"ERROR ",16); } else{ // lcd_out2(0,0,"System OK[/] ",16); // unknown command } break; } for(int i = 0; i < 10; i++) buf[i] = 0; // Clear buffer #endif counter++; if( counter >= 100 ){ // led1 = !led1; counter = 0; } Thread::wait(5); } }