2018.07.26
Dependencies: EthernetInterface TextLCD USBDevice USBHost2 mbed
P1_2Y_handy.cpp@0:2cb1be240f50, 2018-07-26 (annotated)
- Committer:
- sayzyas
- Date:
- Thu Jul 26 00:19:33 2018 +0000
- Revision:
- 0:2cb1be240f50
2018.07.26
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sayzyas | 0:2cb1be240f50 | 1 | /* |
sayzyas | 0:2cb1be240f50 | 2 | //////////////////////////////////////////////////////////////////////////// |
sayzyas | 0:2cb1be240f50 | 3 | Project: B1/B2 DebrisProbe Demonstration model |
sayzyas | 0:2cb1be240f50 | 4 | Title: Debris Prober demo HandyCtrl Main |
sayzyas | 0:2cb1be240f50 | 5 | Target: mbed LPC1768 |
sayzyas | 0:2cb1be240f50 | 6 | Data: 2017.06.30 |
sayzyas | 0:2cb1be240f50 | 7 | Author: sayzyas as ZNR |
sayzyas | 0:2cb1be240f50 | 8 | ------------------------------------------------ |
sayzyas | 0:2cb1be240f50 | 9 | The Final Project of this company ! .... may be. |
sayzyas | 0:2cb1be240f50 | 10 | ------------------------------------------------ |
sayzyas | 0:2cb1be240f50 | 11 | |
sayzyas | 0:2cb1be240f50 | 12 | ## ##### ## ##### |
sayzyas | 0:2cb1be240f50 | 13 | ## ## ## ## ## ## |
sayzyas | 0:2cb1be240f50 | 14 | ## ## ## ##### ##### |
sayzyas | 0:2cb1be240f50 | 15 | ## ## ## ## ## ## |
sayzyas | 0:2cb1be240f50 | 16 | ## ## ##### ##### |
sayzyas | 0:2cb1be240f50 | 17 | |
sayzyas | 0:2cb1be240f50 | 18 | mbed LPC1768 |
sayzyas | 0:2cb1be240f50 | 19 | +-------------USB-----------+ |
sayzyas | 0:2cb1be240f50 | 20 | | GND VOUT(3.3V) | |
sayzyas | 0:2cb1be240f50 | 21 | | VIN VU(5.0V OUT)| |
sayzyas | 0:2cb1be240f50 | 22 | | VB IF- | |
sayzyas | 0:2cb1be240f50 | 23 | | mR IF+ | |
sayzyas | 0:2cb1be240f50 | 24 | | p5 mosi Ether RD- | |
sayzyas | 0:2cb1be240f50 | 25 | | p6 miso Ether RD+ | |
sayzyas | 0:2cb1be240f50 | 26 | | p7 sck Ether TD- | |
sayzyas | 0:2cb1be240f50 | 27 | | p8 Ether TD+ | |
sayzyas | 0:2cb1be240f50 | 28 | | p9 tx sdi USB D- | |
sayzyas | 0:2cb1be240f50 | 29 | | p10 rx scl USB D+ | |
sayzyas | 0:2cb1be240f50 | 30 | | p11 mosi CAN rd p30 | |
sayzyas | 0:2cb1be240f50 | 31 | | p12 miso CAN td p29 | |
sayzyas | 0:2cb1be240f50 | 32 | | p13 tx sck sda tx p28 | |
sayzyas | 0:2cb1be240f50 | 33 | | p14 rx scl rx P27 | |
sayzyas | 0:2cb1be240f50 | 34 | | p15 AIn PWM P26 | |
sayzyas | 0:2cb1be240f50 | 35 | | p16 AIn PWM P25 | |
sayzyas | 0:2cb1be240f50 | 36 | | p17 AIn PWM p24 | |
sayzyas | 0:2cb1be240f50 | 37 | | p18 AIn AOut PWM p23 | |
sayzyas | 0:2cb1be240f50 | 38 | | p19 AIn PWM p22 | |
sayzyas | 0:2cb1be240f50 | 39 | | p20 AIn PWM p21 | |
sayzyas | 0:2cb1be240f50 | 40 | +---------------------------+ |
sayzyas | 0:2cb1be240f50 | 41 | |
sayzyas | 0:2cb1be240f50 | 42 | //////////////////////////////////////////////////////////////////////////// |
sayzyas | 0:2cb1be240f50 | 43 | */ |
sayzyas | 0:2cb1be240f50 | 44 | |
sayzyas | 0:2cb1be240f50 | 45 | #include "mbed.h" |
sayzyas | 0:2cb1be240f50 | 46 | #include "USBHostGamepad.h" |
sayzyas | 0:2cb1be240f50 | 47 | #include "USBSerial.h" |
sayzyas | 0:2cb1be240f50 | 48 | #include "rtos.h" |
sayzyas | 0:2cb1be240f50 | 49 | #include "EthernetInterface.h" |
sayzyas | 0:2cb1be240f50 | 50 | #include "common.h" |
sayzyas | 0:2cb1be240f50 | 51 | #include "stdio.h" |
sayzyas | 0:2cb1be240f50 | 52 | //#include "TextLCD.h" |
sayzyas | 0:2cb1be240f50 | 53 | #include "com_func.h" |
sayzyas | 0:2cb1be240f50 | 54 | #include "USBHID.h" |
sayzyas | 0:2cb1be240f50 | 55 | #include "TextLCD.h" |
sayzyas | 0:2cb1be240f50 | 56 | |
sayzyas | 0:2cb1be240f50 | 57 | |
sayzyas | 0:2cb1be240f50 | 58 | // USBSerial serial setting |
sayzyas | 0:2cb1be240f50 | 59 | Serial pc(USBTX, USBRX); // UART |
sayzyas | 0:2cb1be240f50 | 60 | |
sayzyas | 0:2cb1be240f50 | 61 | // Digital I/O setting |
sayzyas | 0:2cb1be240f50 | 62 | DigitalOut led1(LED1); // 1:on,0:off System is OK then ON. |
sayzyas | 0:2cb1be240f50 | 63 | DigitalOut led2(LED2); // 1:on,0:off GamePad is connected. |
sayzyas | 0:2cb1be240f50 | 64 | DigitalOut led3(LED3); // 1:on,0:off When got the GamePas switch input then ON |
sayzyas | 0:2cb1be240f50 | 65 | DigitalOut led4(LED4); // 1:on,0:off Access indicator with PC |
sayzyas | 0:2cb1be240f50 | 66 | |
sayzyas | 0:2cb1be240f50 | 67 | // LED indicator |
sayzyas | 0:2cb1be240f50 | 68 | DigitalOut led_ind_ptwc(p14); // LED indicator pan/tilt, winch, crawler limit |
sayzyas | 0:2cb1be240f50 | 69 | DigitalOut led_ind_tfm(p15); // LED indicator tfm motor current limit |
sayzyas | 0:2cb1be240f50 | 70 | DigitalOut led_valid_part1(p25); // LED transform, crawler valid |
sayzyas | 0:2cb1be240f50 | 71 | DigitalOut led_valid_part2(p26); // LED pan/tilt, winch valid |
sayzyas | 0:2cb1be240f50 | 72 | |
sayzyas | 0:2cb1be240f50 | 73 | int16_t led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 74 | int16_t led_ind_cnt_t = 0; |
sayzyas | 0:2cb1be240f50 | 75 | |
sayzyas | 0:2cb1be240f50 | 76 | // Switch Matrix 3bit SW ON = 0 input |
sayzyas | 0:2cb1be240f50 | 77 | // bit 2 1 0 Send data |
sayzyas | 0:2cb1be240f50 | 78 | // 0 1 1 1 : |
sayzyas | 0:2cb1be240f50 | 79 | // 1 1 1 0 : 0x01 RF Tfm K |
sayzyas | 0:2cb1be240f50 | 80 | // 2 1 0 1 : 0x02 RF Tfm I |
sayzyas | 0:2cb1be240f50 | 81 | // 3 1 0 0 : 0x04 LB Tfm K |
sayzyas | 0:2cb1be240f50 | 82 | // 4 0 1 1 : 0x08 LB Tfm I |
sayzyas | 0:2cb1be240f50 | 83 | // 5 0 1 0 : 0x10 Winch Down |
sayzyas | 0:2cb1be240f50 | 84 | // 6 0 0 1 : 0x20 Winch Up |
sayzyas | 0:2cb1be240f50 | 85 | // 7 0 0 0 : |
sayzyas | 0:2cb1be240f50 | 86 | DigitalIn sw1(p5); // Bit 0 |
sayzyas | 0:2cb1be240f50 | 87 | DigitalIn sw2(p6); // Bit 1 |
sayzyas | 0:2cb1be240f50 | 88 | DigitalIn sw3(p7); // Bit 2 |
sayzyas | 0:2cb1be240f50 | 89 | |
sayzyas | 0:2cb1be240f50 | 90 | // Digital Input 1:OFF, 0:ON |
sayzyas | 0:2cb1be240f50 | 91 | DigitalIn sw_JS_ShapeMode(p29); // SW: i \ k ,pde ( 1: K, 0: I ) |
sayzyas | 0:2cb1be240f50 | 92 | DigitalIn sw_validpart(p30); // SW: CrExp Shape ( 1: Left-Winch. 0: Right-tfmcrwler ) |
sayzyas | 0:2cb1be240f50 | 93 | |
sayzyas | 0:2cb1be240f50 | 94 | // Analig Joystick input for crawler control |
sayzyas | 0:2cb1be240f50 | 95 | AnalogIn Rjsin_UD(p16); // Crawler R-UD |
sayzyas | 0:2cb1be240f50 | 96 | AnalogIn Rjsin_LR(p17); // Crawler R-LR |
sayzyas | 0:2cb1be240f50 | 97 | //AnalogIn Ljsin_UD(p19); // Crawler L-UD |
sayzyas | 0:2cb1be240f50 | 98 | //AnalogIn Ljsin_LR(p20); // Crawler L-LR |
sayzyas | 0:2cb1be240f50 | 99 | |
sayzyas | 0:2cb1be240f50 | 100 | const char* TCP_SERVER_ADDRESS = "192.168.0.24"; |
sayzyas | 0:2cb1be240f50 | 101 | // Ethernet |
sayzyas | 0:2cb1be240f50 | 102 | EthernetInterface eth; |
sayzyas | 0:2cb1be240f50 | 103 | // TCP |
sayzyas | 0:2cb1be240f50 | 104 | TCPSocketConnection tsocket; // TCP client |
sayzyas | 0:2cb1be240f50 | 105 | // UDP |
sayzyas | 0:2cb1be240f50 | 106 | UDPSocket usocket; // UDP client |
sayzyas | 0:2cb1be240f50 | 107 | Endpoint client; |
sayzyas | 0:2cb1be240f50 | 108 | |
sayzyas | 0:2cb1be240f50 | 109 | // Local File System |
sayzyas | 0:2cb1be240f50 | 110 | LocalFileSystem local("local"); // Create the local filesystem under the name "local" |
sayzyas | 0:2cb1be240f50 | 111 | |
sayzyas | 0:2cb1be240f50 | 112 | TextLCD lcd(p11, p12, p24, p23, p22, p21); // rs, e, d4-d7 |
sayzyas | 0:2cb1be240f50 | 113 | |
sayzyas | 0:2cb1be240f50 | 114 | uint8_t js_center_value_r_ud = 0x80; |
sayzyas | 0:2cb1be240f50 | 115 | uint8_t js_center_value_r_lr = 0x80; |
sayzyas | 0:2cb1be240f50 | 116 | uint8_t js_center_value_l_ud = 0x80; |
sayzyas | 0:2cb1be240f50 | 117 | uint8_t js_center_value_l_lr = 0x80; |
sayzyas | 0:2cb1be240f50 | 118 | |
sayzyas | 0:2cb1be240f50 | 119 | // Global |
sayzyas | 0:2cb1be240f50 | 120 | uint32_t flg_gamePad_Connected = 0; |
sayzyas | 0:2cb1be240f50 | 121 | char PC_cmd[11+1] = "&0100000000"; |
sayzyas | 0:2cb1be240f50 | 122 | basic_operation_t baseOperation; |
sayzyas | 0:2cb1be240f50 | 123 | char dbuffer[128]; |
sayzyas | 0:2cb1be240f50 | 124 | |
sayzyas | 0:2cb1be240f50 | 125 | // Global Parameter of setting |
sayzyas | 0:2cb1be240f50 | 126 | setValue_t setValue; // Setting Data |
sayzyas | 0:2cb1be240f50 | 127 | |
sayzyas | 0:2cb1be240f50 | 128 | /* Status flag */ |
sayzyas | 0:2cb1be240f50 | 129 | /* |
sayzyas | 0:2cb1be240f50 | 130 | 0000 0000 : button LI LK RI RK PCW PCCW TU TD |
sayzyas | 0:2cb1be240f50 | 131 | 0000 0000 : limit switch |
sayzyas | 0:2cb1be240f50 | 132 | 0000 0000 : res |
sayzyas | 0:2cb1be240f50 | 133 | 0000 0000 : res |
sayzyas | 0:2cb1be240f50 | 134 | */ |
sayzyas | 0:2cb1be240f50 | 135 | uint32_t flg_exp_status = 0; |
sayzyas | 0:2cb1be240f50 | 136 | Mutex lcdMutex; |
sayzyas | 0:2cb1be240f50 | 137 | Mutex flg_mutex; |
sayzyas | 0:2cb1be240f50 | 138 | int swbtn_Opeflg = 0; |
sayzyas | 0:2cb1be240f50 | 139 | |
sayzyas | 0:2cb1be240f50 | 140 | int16_t winchCurrentPosition; |
sayzyas | 0:2cb1be240f50 | 141 | int16_t winchOffsetValue = 0; // 2016.10.07 added |
sayzyas | 0:2cb1be240f50 | 142 | int16_t winchDramDiameter = 5985; // 2017.01.06 added |
sayzyas | 0:2cb1be240f50 | 143 | |
sayzyas | 0:2cb1be240f50 | 144 | Mutex mtx_wcp; |
sayzyas | 0:2cb1be240f50 | 145 | |
sayzyas | 0:2cb1be240f50 | 146 | bool flg_ButtonOn = false; |
sayzyas | 0:2cb1be240f50 | 147 | bool flg_lsw_valid = false; |
sayzyas | 0:2cb1be240f50 | 148 | |
sayzyas | 0:2cb1be240f50 | 149 | int flg_JS_shape_mode = 0; |
sayzyas | 0:2cb1be240f50 | 150 | int flg_JS_ope_mode = 0; |
sayzyas | 0:2cb1be240f50 | 151 | int motor1_current_pct; |
sayzyas | 0:2cb1be240f50 | 152 | int motor2_current_pct; |
sayzyas | 0:2cb1be240f50 | 153 | uint8_t limitSw_Sts = 0; |
sayzyas | 0:2cb1be240f50 | 154 | char motorLock_sts = '\0'; |
sayzyas | 0:2cb1be240f50 | 155 | |
sayzyas | 0:2cb1be240f50 | 156 | void led_winch_valid( int counter ) |
sayzyas | 0:2cb1be240f50 | 157 | { |
sayzyas | 0:2cb1be240f50 | 158 | if( counter < 25) |
sayzyas | 0:2cb1be240f50 | 159 | { |
sayzyas | 0:2cb1be240f50 | 160 | led_valid_part2 = 0; |
sayzyas | 0:2cb1be240f50 | 161 | } |
sayzyas | 0:2cb1be240f50 | 162 | else |
sayzyas | 0:2cb1be240f50 | 163 | { |
sayzyas | 0:2cb1be240f50 | 164 | led_valid_part2 = 1; |
sayzyas | 0:2cb1be240f50 | 165 | } |
sayzyas | 0:2cb1be240f50 | 166 | } |
sayzyas | 0:2cb1be240f50 | 167 | |
sayzyas | 0:2cb1be240f50 | 168 | void led_crawler_valid( int counter ) |
sayzyas | 0:2cb1be240f50 | 169 | { |
sayzyas | 0:2cb1be240f50 | 170 | if( counter < 25) |
sayzyas | 0:2cb1be240f50 | 171 | { |
sayzyas | 0:2cb1be240f50 | 172 | led_valid_part2 = 1; |
sayzyas | 0:2cb1be240f50 | 173 | } |
sayzyas | 0:2cb1be240f50 | 174 | else |
sayzyas | 0:2cb1be240f50 | 175 | { |
sayzyas | 0:2cb1be240f50 | 176 | led_valid_part2 = 0; |
sayzyas | 0:2cb1be240f50 | 177 | } |
sayzyas | 0:2cb1be240f50 | 178 | } |
sayzyas | 0:2cb1be240f50 | 179 | |
sayzyas | 0:2cb1be240f50 | 180 | void lcd_dsp( int column, int row, char* msg, int cnt) |
sayzyas | 0:2cb1be240f50 | 181 | { |
sayzyas | 0:2cb1be240f50 | 182 | for( int i = 0; i < cnt; i++ ) |
sayzyas | 0:2cb1be240f50 | 183 | { |
sayzyas | 0:2cb1be240f50 | 184 | lcd.locate(column+i,row); |
sayzyas | 0:2cb1be240f50 | 185 | lcd.putc(*msg++); |
sayzyas | 0:2cb1be240f50 | 186 | } |
sayzyas | 0:2cb1be240f50 | 187 | Thread::wait(10); |
sayzyas | 0:2cb1be240f50 | 188 | } |
sayzyas | 0:2cb1be240f50 | 189 | |
sayzyas | 0:2cb1be240f50 | 190 | // ============================================================ |
sayzyas | 0:2cb1be240f50 | 191 | // Send Status to PC |
sayzyas | 0:2cb1be240f50 | 192 | // ============================================================ |
sayzyas | 0:2cb1be240f50 | 193 | void sendStatus2PC( char *cmd, int32_t numberOfCmd ){ |
sayzyas | 0:2cb1be240f50 | 194 | int i; |
sayzyas | 0:2cb1be240f50 | 195 | led4 = 1; |
sayzyas | 0:2cb1be240f50 | 196 | for ( i = 0; i < numberOfCmd; i++ ) { |
sayzyas | 0:2cb1be240f50 | 197 | pc.putc(*cmd++); |
sayzyas | 0:2cb1be240f50 | 198 | } |
sayzyas | 0:2cb1be240f50 | 199 | led4 = 0; |
sayzyas | 0:2cb1be240f50 | 200 | } |
sayzyas | 0:2cb1be240f50 | 201 | |
sayzyas | 0:2cb1be240f50 | 202 | uint8_t adj_crawlerSpeed( uint8_t in ) |
sayzyas | 0:2cb1be240f50 | 203 | { |
sayzyas | 0:2cb1be240f50 | 204 | uint8_t out; |
sayzyas | 0:2cb1be240f50 | 205 | /* |
sayzyas | 0:2cb1be240f50 | 206 | pc.printf( "#### %d ####\r\n", in ); |
sayzyas | 0:2cb1be240f50 | 207 | |
sayzyas | 0:2cb1be240f50 | 208 | if( ( in > 0 ) && ( in < 98 )) |
sayzyas | 0:2cb1be240f50 | 209 | { |
sayzyas | 0:2cb1be240f50 | 210 | out = (uint8_t)((float)in * 0.8); |
sayzyas | 0:2cb1be240f50 | 211 | } |
sayzyas | 0:2cb1be240f50 | 212 | else |
sayzyas | 0:2cb1be240f50 | 213 | { |
sayzyas | 0:2cb1be240f50 | 214 | out = 100; |
sayzyas | 0:2cb1be240f50 | 215 | } |
sayzyas | 0:2cb1be240f50 | 216 | */ |
sayzyas | 0:2cb1be240f50 | 217 | out = in; |
sayzyas | 0:2cb1be240f50 | 218 | return out; |
sayzyas | 0:2cb1be240f50 | 219 | } |
sayzyas | 0:2cb1be240f50 | 220 | |
sayzyas | 0:2cb1be240f50 | 221 | |
sayzyas | 0:2cb1be240f50 | 222 | bool cmd_snd2serverZ( |
sayzyas | 0:2cb1be240f50 | 223 | char* cmd, // command send to server |
sayzyas | 0:2cb1be240f50 | 224 | int cmdSize |
sayzyas | 0:2cb1be240f50 | 225 | ){ |
sayzyas | 0:2cb1be240f50 | 226 | tsocket.send(cmd, cmdSize); |
sayzyas | 0:2cb1be240f50 | 227 | DEBUG_PRINT_L0("Snd cmd 2 server [ %s (%d) ]\r\n", cmd, cmdSize ); |
sayzyas | 0:2cb1be240f50 | 228 | // Clean up |
sayzyas | 0:2cb1be240f50 | 229 | |
sayzyas | 0:2cb1be240f50 | 230 | return true; |
sayzyas | 0:2cb1be240f50 | 231 | } |
sayzyas | 0:2cb1be240f50 | 232 | |
sayzyas | 0:2cb1be240f50 | 233 | |
sayzyas | 0:2cb1be240f50 | 234 | bool flg_mc_tfmcrw = false; |
sayzyas | 0:2cb1be240f50 | 235 | bool flg_mc_winch = false; |
sayzyas | 0:2cb1be240f50 | 236 | char I2C_res[NumberOfI2CCommand+1] = "\0"; |
sayzyas | 0:2cb1be240f50 | 237 | |
sayzyas | 0:2cb1be240f50 | 238 | // ***************************************************************** |
sayzyas | 0:2cb1be240f50 | 239 | // calibration joystick data |
sayzyas | 0:2cb1be240f50 | 240 | // ***************************************************************** |
sayzyas | 0:2cb1be240f50 | 241 | bool calibrate_joystick( int js, uint8_t data_ud, uint8_t data_lr ){ |
sayzyas | 0:2cb1be240f50 | 242 | uint16_t tmp; |
sayzyas | 0:2cb1be240f50 | 243 | |
sayzyas | 0:2cb1be240f50 | 244 | if( js == 0 ) // R-JS |
sayzyas | 0:2cb1be240f50 | 245 | { |
sayzyas | 0:2cb1be240f50 | 246 | tmp = (uint16_t)js_center_value_r_ud; |
sayzyas | 0:2cb1be240f50 | 247 | tmp += (uint16_t)data_ud; |
sayzyas | 0:2cb1be240f50 | 248 | tmp /= 2; |
sayzyas | 0:2cb1be240f50 | 249 | js_center_value_r_ud = (uint8_t)tmp; |
sayzyas | 0:2cb1be240f50 | 250 | |
sayzyas | 0:2cb1be240f50 | 251 | tmp = (uint16_t)js_center_value_r_lr; |
sayzyas | 0:2cb1be240f50 | 252 | tmp += (uint16_t)data_lr; |
sayzyas | 0:2cb1be240f50 | 253 | tmp /= 2; |
sayzyas | 0:2cb1be240f50 | 254 | js_center_value_r_lr = (uint8_t)tmp; |
sayzyas | 0:2cb1be240f50 | 255 | |
sayzyas | 0:2cb1be240f50 | 256 | if |
sayzyas | 0:2cb1be240f50 | 257 | ( |
sayzyas | 0:2cb1be240f50 | 258 | (((127-10) < js_center_value_r_ud )&&(js_center_value_r_ud < (127+10))) && |
sayzyas | 0:2cb1be240f50 | 259 | (((127-10) < js_center_value_r_lr )&&(js_center_value_r_lr < (127+10))) |
sayzyas | 0:2cb1be240f50 | 260 | ) |
sayzyas | 0:2cb1be240f50 | 261 | { |
sayzyas | 0:2cb1be240f50 | 262 | return true; |
sayzyas | 0:2cb1be240f50 | 263 | } |
sayzyas | 0:2cb1be240f50 | 264 | else |
sayzyas | 0:2cb1be240f50 | 265 | { |
sayzyas | 0:2cb1be240f50 | 266 | return false; |
sayzyas | 0:2cb1be240f50 | 267 | } |
sayzyas | 0:2cb1be240f50 | 268 | } |
sayzyas | 0:2cb1be240f50 | 269 | else // Other |
sayzyas | 0:2cb1be240f50 | 270 | { |
sayzyas | 0:2cb1be240f50 | 271 | tmp = (uint16_t)js_center_value_l_ud; |
sayzyas | 0:2cb1be240f50 | 272 | tmp += (uint16_t)data_ud; |
sayzyas | 0:2cb1be240f50 | 273 | tmp /= 2; |
sayzyas | 0:2cb1be240f50 | 274 | js_center_value_l_ud = (uint8_t)tmp; |
sayzyas | 0:2cb1be240f50 | 275 | |
sayzyas | 0:2cb1be240f50 | 276 | tmp = (uint16_t)js_center_value_l_lr; |
sayzyas | 0:2cb1be240f50 | 277 | tmp += (uint16_t)data_lr; |
sayzyas | 0:2cb1be240f50 | 278 | tmp /= 2; |
sayzyas | 0:2cb1be240f50 | 279 | js_center_value_l_lr = (uint8_t)tmp; |
sayzyas | 0:2cb1be240f50 | 280 | |
sayzyas | 0:2cb1be240f50 | 281 | if |
sayzyas | 0:2cb1be240f50 | 282 | ( |
sayzyas | 0:2cb1be240f50 | 283 | (((127-10) < js_center_value_l_ud )&&(js_center_value_l_ud < (127+10))) && |
sayzyas | 0:2cb1be240f50 | 284 | (((127-10) < js_center_value_l_lr )&&(js_center_value_l_lr < (127+10))) |
sayzyas | 0:2cb1be240f50 | 285 | ) { |
sayzyas | 0:2cb1be240f50 | 286 | return true; |
sayzyas | 0:2cb1be240f50 | 287 | } |
sayzyas | 0:2cb1be240f50 | 288 | else |
sayzyas | 0:2cb1be240f50 | 289 | { |
sayzyas | 0:2cb1be240f50 | 290 | return false; |
sayzyas | 0:2cb1be240f50 | 291 | } |
sayzyas | 0:2cb1be240f50 | 292 | |
sayzyas | 0:2cb1be240f50 | 293 | } |
sayzyas | 0:2cb1be240f50 | 294 | } |
sayzyas | 0:2cb1be240f50 | 295 | |
sayzyas | 0:2cb1be240f50 | 296 | // LED current indicator blink control when |
sayzyas | 0:2cb1be240f50 | 297 | // each motor is moving. |
sayzyas | 0:2cb1be240f50 | 298 | void led_ind_run |
sayzyas | 0:2cb1be240f50 | 299 | ( |
sayzyas | 0:2cb1be240f50 | 300 | int led_number, |
sayzyas | 0:2cb1be240f50 | 301 | int count, |
sayzyas | 0:2cb1be240f50 | 302 | int period |
sayzyas | 0:2cb1be240f50 | 303 | ){ |
sayzyas | 0:2cb1be240f50 | 304 | if(( count >= 0 )&&( count < period )) |
sayzyas | 0:2cb1be240f50 | 305 | { |
sayzyas | 0:2cb1be240f50 | 306 | if( led_number == 1 ) |
sayzyas | 0:2cb1be240f50 | 307 | { |
sayzyas | 0:2cb1be240f50 | 308 | led_ind_ptwc = ON; |
sayzyas | 0:2cb1be240f50 | 309 | } |
sayzyas | 0:2cb1be240f50 | 310 | else |
sayzyas | 0:2cb1be240f50 | 311 | { |
sayzyas | 0:2cb1be240f50 | 312 | led_ind_tfm = ON; |
sayzyas | 0:2cb1be240f50 | 313 | } |
sayzyas | 0:2cb1be240f50 | 314 | } |
sayzyas | 0:2cb1be240f50 | 315 | else if(( count >= period )&&( count < period*2 )) |
sayzyas | 0:2cb1be240f50 | 316 | { |
sayzyas | 0:2cb1be240f50 | 317 | if( led_number == 1 ) |
sayzyas | 0:2cb1be240f50 | 318 | { |
sayzyas | 0:2cb1be240f50 | 319 | led_ind_ptwc = OFF; |
sayzyas | 0:2cb1be240f50 | 320 | } |
sayzyas | 0:2cb1be240f50 | 321 | else |
sayzyas | 0:2cb1be240f50 | 322 | { |
sayzyas | 0:2cb1be240f50 | 323 | led_ind_tfm = OFF; |
sayzyas | 0:2cb1be240f50 | 324 | } |
sayzyas | 0:2cb1be240f50 | 325 | } |
sayzyas | 0:2cb1be240f50 | 326 | else |
sayzyas | 0:2cb1be240f50 | 327 | { |
sayzyas | 0:2cb1be240f50 | 328 | led_ind_ptwc = OFF; |
sayzyas | 0:2cb1be240f50 | 329 | led_ind_tfm = OFF; |
sayzyas | 0:2cb1be240f50 | 330 | } |
sayzyas | 0:2cb1be240f50 | 331 | } |
sayzyas | 0:2cb1be240f50 | 332 | |
sayzyas | 0:2cb1be240f50 | 333 | |
sayzyas | 0:2cb1be240f50 | 334 | void led_error_blink( int no, int times ) |
sayzyas | 0:2cb1be240f50 | 335 | { |
sayzyas | 0:2cb1be240f50 | 336 | for( int i = 0; i < times; i++ ) { |
sayzyas | 0:2cb1be240f50 | 337 | if( no == 1 ) |
sayzyas | 0:2cb1be240f50 | 338 | { |
sayzyas | 0:2cb1be240f50 | 339 | led_ind_ptwc = 1; |
sayzyas | 0:2cb1be240f50 | 340 | } |
sayzyas | 0:2cb1be240f50 | 341 | else |
sayzyas | 0:2cb1be240f50 | 342 | { |
sayzyas | 0:2cb1be240f50 | 343 | led_ind_tfm = 1; |
sayzyas | 0:2cb1be240f50 | 344 | } |
sayzyas | 0:2cb1be240f50 | 345 | Thread::wait(50); |
sayzyas | 0:2cb1be240f50 | 346 | if( no == 1 ) |
sayzyas | 0:2cb1be240f50 | 347 | { |
sayzyas | 0:2cb1be240f50 | 348 | led_ind_ptwc = 0; |
sayzyas | 0:2cb1be240f50 | 349 | } |
sayzyas | 0:2cb1be240f50 | 350 | else |
sayzyas | 0:2cb1be240f50 | 351 | { |
sayzyas | 0:2cb1be240f50 | 352 | led_ind_tfm = 0; |
sayzyas | 0:2cb1be240f50 | 353 | } |
sayzyas | 0:2cb1be240f50 | 354 | Thread::wait(50); |
sayzyas | 0:2cb1be240f50 | 355 | } |
sayzyas | 0:2cb1be240f50 | 356 | } |
sayzyas | 0:2cb1be240f50 | 357 | |
sayzyas | 0:2cb1be240f50 | 358 | bool flg_B2 = false; |
sayzyas | 0:2cb1be240f50 | 359 | bool flg_system_ok = true; |
sayzyas | 0:2cb1be240f50 | 360 | |
sayzyas | 0:2cb1be240f50 | 361 | // ***************************************************************** |
sayzyas | 0:2cb1be240f50 | 362 | // switch control task |
sayzyas | 0:2cb1be240f50 | 363 | // ---------------------- |
sayzyas | 0:2cb1be240f50 | 364 | // |
sayzyas | 0:2cb1be240f50 | 365 | // Up: center -> 255 |
sayzyas | 0:2cb1be240f50 | 366 | // Down: 002 -> center |
sayzyas | 0:2cb1be240f50 | 367 | // Right: center -> 255 |
sayzyas | 0:2cb1be240f50 | 368 | // Left : 0 -> center |
sayzyas | 0:2cb1be240f50 | 369 | // |
sayzyas | 0:2cb1be240f50 | 370 | // ***************************************************************** |
sayzyas | 0:2cb1be240f50 | 371 | int16_t tmpPosition; |
sayzyas | 0:2cb1be240f50 | 372 | void sw_task( void const *){ |
sayzyas | 0:2cb1be240f50 | 373 | |
sayzyas | 0:2cb1be240f50 | 374 | char msg[16] = ""; |
sayzyas | 0:2cb1be240f50 | 375 | |
sayzyas | 0:2cb1be240f50 | 376 | uint16_t jsr_ud_data; |
sayzyas | 0:2cb1be240f50 | 377 | uint16_t jsr_lr_data; |
sayzyas | 0:2cb1be240f50 | 378 | uint8_t jsr_ud_undata; |
sayzyas | 0:2cb1be240f50 | 379 | uint8_t jsr_lr_undata; |
sayzyas | 0:2cb1be240f50 | 380 | |
sayzyas | 0:2cb1be240f50 | 381 | uint8_t m1_speed; |
sayzyas | 0:2cb1be240f50 | 382 | uint8_t m2_speed; |
sayzyas | 0:2cb1be240f50 | 383 | char sbuf[128] = ""; // TCP send buffer |
sayzyas | 0:2cb1be240f50 | 384 | char rbuf[128]; // TCP receive buffer |
sayzyas | 0:2cb1be240f50 | 385 | int flg_tfmcrwpart_1st = 0; |
sayzyas | 0:2cb1be240f50 | 386 | int flg_wchcptpart_1st = 0; |
sayzyas | 0:2cb1be240f50 | 387 | |
sayzyas | 0:2cb1be240f50 | 388 | int rts; |
sayzyas | 0:2cb1be240f50 | 389 | bool jsjg = true; |
sayzyas | 0:2cb1be240f50 | 390 | |
sayzyas | 0:2cb1be240f50 | 391 | bool led_tfm_lock = false; |
sayzyas | 0:2cb1be240f50 | 392 | bool led_ptwc_lock = false; |
sayzyas | 0:2cb1be240f50 | 393 | |
sayzyas | 0:2cb1be240f50 | 394 | int runcount = 0; |
sayzyas | 0:2cb1be240f50 | 395 | |
sayzyas | 0:2cb1be240f50 | 396 | DEBUG_PRINT_L0("Handy(Bd2)>> Start ststem initializing ...\r\n"); |
sayzyas | 0:2cb1be240f50 | 397 | DEBUG_PRINT_L0("Handy(Bd2)>> =============================================================\r\n"); |
sayzyas | 0:2cb1be240f50 | 398 | DEBUG_PRINT_L0("Handy(Bd2)>> Initalizing Ethernet ...\r\n"); |
sayzyas | 0:2cb1be240f50 | 399 | DEBUG_PRINT_L0("Handy(Bd2)>> =============================================================\r\n"); |
sayzyas | 0:2cb1be240f50 | 400 | |
sayzyas | 0:2cb1be240f50 | 401 | const char* ip_address = "192.168.0.31"; |
sayzyas | 0:2cb1be240f50 | 402 | const char* subnet_mask = "255.255.255.0"; |
sayzyas | 0:2cb1be240f50 | 403 | const char* gateway = "192.168.0.0"; |
sayzyas | 0:2cb1be240f50 | 404 | |
sayzyas | 0:2cb1be240f50 | 405 | DEBUG_PRINT_L0("Handy(Bd2)> --------------------------------------\r\n"); |
sayzyas | 0:2cb1be240f50 | 406 | DEBUG_PRINT_L0("Handy(Bd2)> ip address : %s\r\n", ip_address); |
sayzyas | 0:2cb1be240f50 | 407 | DEBUG_PRINT_L0("Handy(Bd2)> subnet mask : %s\r\n", subnet_mask); |
sayzyas | 0:2cb1be240f50 | 408 | DEBUG_PRINT_L0("Handy(Bd2)> default gateway: %s\r\n", gateway); |
sayzyas | 0:2cb1be240f50 | 409 | DEBUG_PRINT_L0("Handy(Bd2)> --------------------------------------\r\n"); |
sayzyas | 0:2cb1be240f50 | 410 | |
sayzyas | 0:2cb1be240f50 | 411 | char sss[24]; |
sayzyas | 0:2cb1be240f50 | 412 | |
sayzyas | 0:2cb1be240f50 | 413 | int ret = eth.init( |
sayzyas | 0:2cb1be240f50 | 414 | ip_address, // const char* ip, |
sayzyas | 0:2cb1be240f50 | 415 | subnet_mask, // const char* mask, |
sayzyas | 0:2cb1be240f50 | 416 | gateway // const char* gateway |
sayzyas | 0:2cb1be240f50 | 417 | ); |
sayzyas | 0:2cb1be240f50 | 418 | if( ret == 0 ){ |
sayzyas | 0:2cb1be240f50 | 419 | |
sayzyas | 0:2cb1be240f50 | 420 | DEBUG_PRINT_L0("Handy(Bd2)> Eternet init ... OK\r\n"); |
sayzyas | 0:2cb1be240f50 | 421 | ret = eth.connect(7000); // Connection time out: 7000msec |
sayzyas | 0:2cb1be240f50 | 422 | |
sayzyas | 0:2cb1be240f50 | 423 | if( ret == 0 ){ |
sayzyas | 0:2cb1be240f50 | 424 | cf_led_onoff( &led1,&led2,&led3,&led4, false, false, false, true ); |
sayzyas | 0:2cb1be240f50 | 425 | DEBUG_PRINT_L0("Handy(Bd2)> [ IP Address : %s ]\r\n", eth.getIPAddress()); |
sayzyas | 0:2cb1be240f50 | 426 | while( true ) |
sayzyas | 0:2cb1be240f50 | 427 | { |
sayzyas | 0:2cb1be240f50 | 428 | if (tsocket.connect(TCP_SERVER_ADDRESS, TCP_SERVER_PORT) < 0) { |
sayzyas | 0:2cb1be240f50 | 429 | DEBUG_PRINT_L0("Handy(Bd2)> ###ERROR### : Unable to connect to (%s) on port (%d)\r\n", TCP_SERVER_ADDRESS, TCP_SERVER_PORT); |
sayzyas | 0:2cb1be240f50 | 430 | flg_system_ok = false; |
sayzyas | 0:2cb1be240f50 | 431 | wait(0.5); |
sayzyas | 0:2cb1be240f50 | 432 | break; |
sayzyas | 0:2cb1be240f50 | 433 | } |
sayzyas | 0:2cb1be240f50 | 434 | flg_system_ok = true; |
sayzyas | 0:2cb1be240f50 | 435 | sprintf(sss, "IP:%s", ip_address ); |
sayzyas | 0:2cb1be240f50 | 436 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 437 | lcd_dsp(0,0,"Network .. OK ",16); |
sayzyas | 0:2cb1be240f50 | 438 | sss[15] = ' '; |
sayzyas | 0:2cb1be240f50 | 439 | lcd_dsp(0,1,sss,16); |
sayzyas | 0:2cb1be240f50 | 440 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 441 | sprintf( sbuf, "Hello" ); |
sayzyas | 0:2cb1be240f50 | 442 | DEBUG_PRINT_L0( "Handy(Bd2)> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 443 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 444 | wait_ms(5); |
sayzyas | 0:2cb1be240f50 | 445 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 446 | tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 447 | |
sayzyas | 0:2cb1be240f50 | 448 | // |
sayzyas | 0:2cb1be240f50 | 449 | // Check target (B1 or B2) here ! |
sayzyas | 0:2cb1be240f50 | 450 | // |
sayzyas | 0:2cb1be240f50 | 451 | if( !strncmp( rbuf, "B2Demo", 6 ) ) |
sayzyas | 0:2cb1be240f50 | 452 | { |
sayzyas | 0:2cb1be240f50 | 453 | DEBUG_PRINT_L0( "Handy(Bd2)> Echo back [%s]\r\n", rbuf ); |
sayzyas | 0:2cb1be240f50 | 454 | flg_B2 = true; |
sayzyas | 0:2cb1be240f50 | 455 | } |
sayzyas | 0:2cb1be240f50 | 456 | wait_ms(300); |
sayzyas | 0:2cb1be240f50 | 457 | |
sayzyas | 0:2cb1be240f50 | 458 | DEBUG_PRINT_L1("Calibrating joystick ... "); |
sayzyas | 0:2cb1be240f50 | 459 | for( int i = 0; i < CALIBRATION_COUNT; i++){ |
sayzyas | 0:2cb1be240f50 | 460 | jsr_ud_data = Rjsin_UD.read_u16(); |
sayzyas | 0:2cb1be240f50 | 461 | jsr_lr_data = Rjsin_LR.read_u16(); |
sayzyas | 0:2cb1be240f50 | 462 | jsr_ud_undata = (uint8_t)(jsr_ud_data >> 8); |
sayzyas | 0:2cb1be240f50 | 463 | jsr_lr_undata = (uint8_t)(jsr_lr_data >> 8); |
sayzyas | 0:2cb1be240f50 | 464 | jsjg = calibrate_joystick( 0, jsr_ud_undata, jsr_lr_undata); // Under constraction |
sayzyas | 0:2cb1be240f50 | 465 | } |
sayzyas | 0:2cb1be240f50 | 466 | |
sayzyas | 0:2cb1be240f50 | 467 | if( jsjg == false ){ |
sayzyas | 0:2cb1be240f50 | 468 | flg_system_ok = false; |
sayzyas | 0:2cb1be240f50 | 469 | wait(0.5); |
sayzyas | 0:2cb1be240f50 | 470 | break; |
sayzyas | 0:2cb1be240f50 | 471 | } |
sayzyas | 0:2cb1be240f50 | 472 | |
sayzyas | 0:2cb1be240f50 | 473 | DEBUG_PRINT_L1("done\r\n"); |
sayzyas | 0:2cb1be240f50 | 474 | |
sayzyas | 0:2cb1be240f50 | 475 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 476 | wait_ms(500); |
sayzyas | 0:2cb1be240f50 | 477 | lcd_dsp(0,0,"System Boot up ",16); |
sayzyas | 0:2cb1be240f50 | 478 | |
sayzyas | 0:2cb1be240f50 | 479 | if( flg_B2 == true ) |
sayzyas | 0:2cb1be240f50 | 480 | { |
sayzyas | 0:2cb1be240f50 | 481 | sprintf( msg, "B2Wch [**** mm] "); // B2 |
sayzyas | 0:2cb1be240f50 | 482 | } |
sayzyas | 0:2cb1be240f50 | 483 | else |
sayzyas | 0:2cb1be240f50 | 484 | { |
sayzyas | 0:2cb1be240f50 | 485 | sprintf( msg, "------ B1 ------"); // B1 |
sayzyas | 0:2cb1be240f50 | 486 | } |
sayzyas | 0:2cb1be240f50 | 487 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 488 | lcd_dsp(0,0," ",16); |
sayzyas | 0:2cb1be240f50 | 489 | lcd_dsp(0,1,msg,16); |
sayzyas | 0:2cb1be240f50 | 490 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 491 | |
sayzyas | 0:2cb1be240f50 | 492 | while(1){ |
sayzyas | 0:2cb1be240f50 | 493 | jsr_ud_data = Rjsin_UD.read_u16(); |
sayzyas | 0:2cb1be240f50 | 494 | jsr_lr_data = Rjsin_LR.read_u16(); |
sayzyas | 0:2cb1be240f50 | 495 | |
sayzyas | 0:2cb1be240f50 | 496 | jsr_ud_undata = (uint8_t)(jsr_ud_data >> 8); |
sayzyas | 0:2cb1be240f50 | 497 | jsr_lr_undata = (uint8_t)(jsr_lr_data >> 8); |
sayzyas | 0:2cb1be240f50 | 498 | |
sayzyas | 0:2cb1be240f50 | 499 | DEBUG_PRINT_SW("Handy SW> "); |
sayzyas | 0:2cb1be240f50 | 500 | DEBUG_PRINT_SW("R:%03d/%3d,%03d/%3d ", jsr_ud_undata, js_center_value_r_ud, jsr_lr_undata, js_center_value_r_ud ); |
sayzyas | 0:2cb1be240f50 | 501 | DEBUG_PRINT_SW("SW: %d %d %d ", sw1.read(), sw2.read(), sw3.read() ); |
sayzyas | 0:2cb1be240f50 | 502 | DEBUG_PRINT_SW("JS: %d %d\r\n", sw_JS_ShapeMode.read(), sw_validpart.read() ); |
sayzyas | 0:2cb1be240f50 | 503 | |
sayzyas | 0:2cb1be240f50 | 504 | // ********************************************************** |
sayzyas | 0:2cb1be240f50 | 505 | // Transform and crawler control part |
sayzyas | 0:2cb1be240f50 | 506 | // ********************************************************** |
sayzyas | 0:2cb1be240f50 | 507 | if( sw_validpart == 0 ){ // sw on |
sayzyas | 0:2cb1be240f50 | 508 | flg_wchcptpart_1st = 0; |
sayzyas | 0:2cb1be240f50 | 509 | led_valid_part2 = 0; |
sayzyas | 0:2cb1be240f50 | 510 | led_valid_part1 = 1; |
sayzyas | 0:2cb1be240f50 | 511 | if( flg_tfmcrwpart_1st == 0 ) |
sayzyas | 0:2cb1be240f50 | 512 | { |
sayzyas | 0:2cb1be240f50 | 513 | sprintf( sbuf, "OX_PART_000_0000" ); |
sayzyas | 0:2cb1be240f50 | 514 | DEBUG_PRINT_L0( "Handy(Bd2)> VALID PART [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 515 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 516 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 517 | Thread::wait(5); |
sayzyas | 0:2cb1be240f50 | 518 | flg_tfmcrwpart_1st = 1; |
sayzyas | 0:2cb1be240f50 | 519 | } |
sayzyas | 0:2cb1be240f50 | 520 | else |
sayzyas | 0:2cb1be240f50 | 521 | { |
sayzyas | 0:2cb1be240f50 | 522 | // --------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 523 | // Right JoyStick Control |
sayzyas | 0:2cb1be240f50 | 524 | // --------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 525 | if( sw_JS_ShapeMode == 1 ){ // OFF: KO-Shape |
sayzyas | 0:2cb1be240f50 | 526 | |
sayzyas | 0:2cb1be240f50 | 527 | if( // Dead zone |
sayzyas | 0:2cb1be240f50 | 528 | ( jsr_ud_undata >= (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 529 | ( jsr_ud_undata <= (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) && |
sayzyas | 0:2cb1be240f50 | 530 | ( jsr_lr_undata >= (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 531 | ( jsr_lr_undata <= (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) |
sayzyas | 0:2cb1be240f50 | 532 | ){ |
sayzyas | 0:2cb1be240f50 | 533 | sprintf( sbuf, "XX_CLRF_002_0000" ); // M1 Stop |
sayzyas | 0:2cb1be240f50 | 534 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 535 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 536 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 537 | sprintf( sbuf, "XX_CLLB_002_0000" ); // M2 Stop |
sayzyas | 0:2cb1be240f50 | 538 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 539 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 540 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 541 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 542 | if( runcount < 15 ) |
sayzyas | 0:2cb1be240f50 | 543 | { |
sayzyas | 0:2cb1be240f50 | 544 | lcd_dsp(0,0,"OX [^] ",16); |
sayzyas | 0:2cb1be240f50 | 545 | } |
sayzyas | 0:2cb1be240f50 | 546 | else if ( runcount < 30 ) |
sayzyas | 0:2cb1be240f50 | 547 | { |
sayzyas | 0:2cb1be240f50 | 548 | lcd_dsp(0,0,"OX [>] ",16); |
sayzyas | 0:2cb1be240f50 | 549 | } |
sayzyas | 0:2cb1be240f50 | 550 | else if(runcount < 45 ) |
sayzyas | 0:2cb1be240f50 | 551 | { |
sayzyas | 0:2cb1be240f50 | 552 | lcd_dsp(0,0,"OX [v] ",16); |
sayzyas | 0:2cb1be240f50 | 553 | } |
sayzyas | 0:2cb1be240f50 | 554 | else{ |
sayzyas | 0:2cb1be240f50 | 555 | lcd_dsp(0,0,"OX [<] ",16); |
sayzyas | 0:2cb1be240f50 | 556 | } |
sayzyas | 0:2cb1be240f50 | 557 | if( runcount >= 60 ) |
sayzyas | 0:2cb1be240f50 | 558 | { |
sayzyas | 0:2cb1be240f50 | 559 | runcount = 0; |
sayzyas | 0:2cb1be240f50 | 560 | } |
sayzyas | 0:2cb1be240f50 | 561 | else |
sayzyas | 0:2cb1be240f50 | 562 | { |
sayzyas | 0:2cb1be240f50 | 563 | runcount++; |
sayzyas | 0:2cb1be240f50 | 564 | } |
sayzyas | 0:2cb1be240f50 | 565 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 566 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 567 | // rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 568 | // if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 569 | led4 = 0; |
sayzyas | 0:2cb1be240f50 | 570 | led_ind_ptwc = 0; |
sayzyas | 0:2cb1be240f50 | 571 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 572 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 573 | } |
sayzyas | 0:2cb1be240f50 | 574 | else if( // Forward zone |
sayzyas | 0:2cb1be240f50 | 575 | ( jsr_ud_undata > (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) && |
sayzyas | 0:2cb1be240f50 | 576 | ( jsr_lr_undata > (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 577 | ( jsr_lr_undata < (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) |
sayzyas | 0:2cb1be240f50 | 578 | ){ |
sayzyas | 0:2cb1be240f50 | 579 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 580 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 581 | { |
sayzyas | 0:2cb1be240f50 | 582 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 583 | } |
sayzyas | 0:2cb1be240f50 | 584 | else |
sayzyas | 0:2cb1be240f50 | 585 | { |
sayzyas | 0:2cb1be240f50 | 586 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 587 | } |
sayzyas | 0:2cb1be240f50 | 588 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 589 | m1_speed = ( jsr_ud_undata - js_center_value_r_ud ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 590 | m2_speed = m1_speed; |
sayzyas | 0:2cb1be240f50 | 591 | sprintf( sbuf, "XX_CLRF_000_%04d", m1_speed ); // M1 Fwd |
sayzyas | 0:2cb1be240f50 | 592 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 593 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 594 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 595 | |
sayzyas | 0:2cb1be240f50 | 596 | sprintf( sbuf, "XX_CLLB_000_%04d", m2_speed ); // M2 Fwd |
sayzyas | 0:2cb1be240f50 | 597 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 598 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 599 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 600 | |
sayzyas | 0:2cb1be240f50 | 601 | DEBUG_PRINT_L2("Handy> R-JS Up: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 602 | sprintf(msg, "OX Cr-F:%03d", (255 - jsr_ud_undata)); |
sayzyas | 0:2cb1be240f50 | 603 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 604 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 605 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 606 | |
sayzyas | 0:2cb1be240f50 | 607 | /* |
sayzyas | 0:2cb1be240f50 | 608 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 609 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 610 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 611 | |
sayzyas | 0:2cb1be240f50 | 612 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 613 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 614 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 615 | { |
sayzyas | 0:2cb1be240f50 | 616 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 617 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 618 | } |
sayzyas | 0:2cb1be240f50 | 619 | */ |
sayzyas | 0:2cb1be240f50 | 620 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 621 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 622 | } |
sayzyas | 0:2cb1be240f50 | 623 | else if( // Reverse zone |
sayzyas | 0:2cb1be240f50 | 624 | ( jsr_ud_undata < (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 625 | ( jsr_lr_undata > (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 626 | ( jsr_lr_undata < (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) |
sayzyas | 0:2cb1be240f50 | 627 | ){ |
sayzyas | 0:2cb1be240f50 | 628 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 629 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 630 | { |
sayzyas | 0:2cb1be240f50 | 631 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 632 | } |
sayzyas | 0:2cb1be240f50 | 633 | else |
sayzyas | 0:2cb1be240f50 | 634 | { |
sayzyas | 0:2cb1be240f50 | 635 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 636 | } |
sayzyas | 0:2cb1be240f50 | 637 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 638 | m1_speed = ( js_center_value_r_ud - jsr_ud_undata ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 639 | m2_speed = m1_speed; |
sayzyas | 0:2cb1be240f50 | 640 | sprintf( sbuf, "XX_CLRF_001_%04d", m1_speed ); // M1 Rvs |
sayzyas | 0:2cb1be240f50 | 641 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 642 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 643 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 644 | |
sayzyas | 0:2cb1be240f50 | 645 | sprintf( sbuf, "XX_CLLB_001_%04d", m2_speed ); // M2 Rvs |
sayzyas | 0:2cb1be240f50 | 646 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 647 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 648 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 649 | |
sayzyas | 0:2cb1be240f50 | 650 | DEBUG_PRINT_L2("Handy> R-JS Down: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 651 | sprintf(msg, "OX Cr-R:%03d", (255 - jsr_ud_undata)); |
sayzyas | 0:2cb1be240f50 | 652 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 653 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 654 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 655 | /* |
sayzyas | 0:2cb1be240f50 | 656 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 657 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 658 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 659 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 660 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 661 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 662 | { |
sayzyas | 0:2cb1be240f50 | 663 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 664 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 665 | } |
sayzyas | 0:2cb1be240f50 | 666 | */ |
sayzyas | 0:2cb1be240f50 | 667 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 668 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 669 | } |
sayzyas | 0:2cb1be240f50 | 670 | |
sayzyas | 0:2cb1be240f50 | 671 | else if( // Right turn zone |
sayzyas | 0:2cb1be240f50 | 672 | ( jsr_lr_undata > (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) && |
sayzyas | 0:2cb1be240f50 | 673 | ( jsr_ud_undata > (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 674 | ( jsr_ud_undata < (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) |
sayzyas | 0:2cb1be240f50 | 675 | ){ |
sayzyas | 0:2cb1be240f50 | 676 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 677 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 678 | { |
sayzyas | 0:2cb1be240f50 | 679 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 680 | } |
sayzyas | 0:2cb1be240f50 | 681 | else |
sayzyas | 0:2cb1be240f50 | 682 | { |
sayzyas | 0:2cb1be240f50 | 683 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 684 | } |
sayzyas | 0:2cb1be240f50 | 685 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 686 | m1_speed = ( jsr_lr_undata - js_center_value_r_lr ) * 100 / js_center_value_r_lr; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 687 | m2_speed = m1_speed; // Speed |
sayzyas | 0:2cb1be240f50 | 688 | sprintf( sbuf, "XX_CLRF_001_%04d", m1_speed ); // M1 Rvs |
sayzyas | 0:2cb1be240f50 | 689 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 690 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 691 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 692 | |
sayzyas | 0:2cb1be240f50 | 693 | sprintf( sbuf, "XX_CLLB_000_%04d", m2_speed ); // M2 Fwd |
sayzyas | 0:2cb1be240f50 | 694 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 695 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 696 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 697 | |
sayzyas | 0:2cb1be240f50 | 698 | DEBUG_PRINT_L2("Handy> R-JS Right: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_lr_undata, send_report.data[2], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 699 | sprintf(msg,"OX Cr->:%03d", jsr_lr_undata); |
sayzyas | 0:2cb1be240f50 | 700 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 701 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 702 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 703 | /* |
sayzyas | 0:2cb1be240f50 | 704 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 705 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 706 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 707 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 708 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 709 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 710 | { |
sayzyas | 0:2cb1be240f50 | 711 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 712 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 713 | } |
sayzyas | 0:2cb1be240f50 | 714 | */ |
sayzyas | 0:2cb1be240f50 | 715 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 716 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 717 | } |
sayzyas | 0:2cb1be240f50 | 718 | else if( // Left turn zone |
sayzyas | 0:2cb1be240f50 | 719 | ( jsr_lr_undata < (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 720 | ( jsr_ud_undata > (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 721 | ( jsr_ud_undata < (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) |
sayzyas | 0:2cb1be240f50 | 722 | ){ |
sayzyas | 0:2cb1be240f50 | 723 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 724 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 725 | { |
sayzyas | 0:2cb1be240f50 | 726 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 727 | } |
sayzyas | 0:2cb1be240f50 | 728 | else |
sayzyas | 0:2cb1be240f50 | 729 | { |
sayzyas | 0:2cb1be240f50 | 730 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 731 | } |
sayzyas | 0:2cb1be240f50 | 732 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 733 | m1_speed = ( js_center_value_r_lr - jsr_lr_undata ) * 100 / js_center_value_r_lr; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 734 | m2_speed = m1_speed; |
sayzyas | 0:2cb1be240f50 | 735 | sprintf( sbuf, "XX_CLRF_000_%04d", m1_speed ); // M1 Fwd |
sayzyas | 0:2cb1be240f50 | 736 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 737 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 738 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 739 | |
sayzyas | 0:2cb1be240f50 | 740 | sprintf( sbuf, "XX_CLLB_001_%04d", m2_speed ); // M2 Rvs |
sayzyas | 0:2cb1be240f50 | 741 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 742 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 743 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 744 | |
sayzyas | 0:2cb1be240f50 | 745 | DEBUG_PRINT_L2("Handy> R-JS Left: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_lr_undata, send_report.data[2], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 746 | sprintf(msg,"OX Cr<-:%03d", jsr_lr_undata); |
sayzyas | 0:2cb1be240f50 | 747 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 748 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 749 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 750 | /* |
sayzyas | 0:2cb1be240f50 | 751 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 752 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 753 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 754 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 755 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 756 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 757 | { |
sayzyas | 0:2cb1be240f50 | 758 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 759 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 760 | } |
sayzyas | 0:2cb1be240f50 | 761 | */ |
sayzyas | 0:2cb1be240f50 | 762 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 763 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 764 | } |
sayzyas | 0:2cb1be240f50 | 765 | |
sayzyas | 0:2cb1be240f50 | 766 | else if( // Right-upper zone |
sayzyas | 0:2cb1be240f50 | 767 | ( jsr_ud_undata > (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) && |
sayzyas | 0:2cb1be240f50 | 768 | ( jsr_lr_undata > (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) |
sayzyas | 0:2cb1be240f50 | 769 | ){ |
sayzyas | 0:2cb1be240f50 | 770 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 771 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 772 | { |
sayzyas | 0:2cb1be240f50 | 773 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 774 | } |
sayzyas | 0:2cb1be240f50 | 775 | else |
sayzyas | 0:2cb1be240f50 | 776 | { |
sayzyas | 0:2cb1be240f50 | 777 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 778 | } |
sayzyas | 0:2cb1be240f50 | 779 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 780 | if( jsr_ud_undata > jsr_lr_undata ) |
sayzyas | 0:2cb1be240f50 | 781 | { |
sayzyas | 0:2cb1be240f50 | 782 | m2_speed = ( jsr_ud_undata - js_center_value_r_ud ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 783 | m1_speed = 100 - (( jsr_lr_undata - js_center_value_r_lr ) * 100 / js_center_value_r_lr); |
sayzyas | 0:2cb1be240f50 | 784 | sprintf( sbuf, "XX_CLRF_000_%04d", m1_speed ); // M1 Fwd |
sayzyas | 0:2cb1be240f50 | 785 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 786 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 787 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 788 | |
sayzyas | 0:2cb1be240f50 | 789 | sprintf( sbuf, "XX_CLLB_000_%04d", m2_speed ); // M2 Fwd |
sayzyas | 0:2cb1be240f50 | 790 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 791 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 792 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 793 | /* |
sayzyas | 0:2cb1be240f50 | 794 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 795 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 796 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 797 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 798 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 799 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 800 | { |
sayzyas | 0:2cb1be240f50 | 801 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 802 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 803 | } |
sayzyas | 0:2cb1be240f50 | 804 | */ |
sayzyas | 0:2cb1be240f50 | 805 | } |
sayzyas | 0:2cb1be240f50 | 806 | DEBUG_PRINT_L2("Handy> R-JS R-U zone: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 807 | sprintf(msg, "OX Cr-FRZ "); |
sayzyas | 0:2cb1be240f50 | 808 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 809 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 810 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 811 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 812 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 813 | } |
sayzyas | 0:2cb1be240f50 | 814 | |
sayzyas | 0:2cb1be240f50 | 815 | else if( // Left-upper zone |
sayzyas | 0:2cb1be240f50 | 816 | ( jsr_ud_undata > (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) && |
sayzyas | 0:2cb1be240f50 | 817 | ( jsr_lr_undata < (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) |
sayzyas | 0:2cb1be240f50 | 818 | ){ |
sayzyas | 0:2cb1be240f50 | 819 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 820 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 821 | { |
sayzyas | 0:2cb1be240f50 | 822 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 823 | } |
sayzyas | 0:2cb1be240f50 | 824 | else |
sayzyas | 0:2cb1be240f50 | 825 | { |
sayzyas | 0:2cb1be240f50 | 826 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 827 | } |
sayzyas | 0:2cb1be240f50 | 828 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 829 | if( (jsr_ud_undata - js_center_value_r_ud) > (js_center_value_r_ud-jsr_lr_undata) ) |
sayzyas | 0:2cb1be240f50 | 830 | { |
sayzyas | 0:2cb1be240f50 | 831 | m1_speed = ( jsr_ud_undata - js_center_value_r_ud ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 832 | m2_speed = 100 - (( js_center_value_r_lr - jsr_lr_undata ) * 100 / js_center_value_r_lr); |
sayzyas | 0:2cb1be240f50 | 833 | sprintf( sbuf, "XX_CLRF_000_%04d", m1_speed ); // M1 Fwd |
sayzyas | 0:2cb1be240f50 | 834 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 835 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 836 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 837 | |
sayzyas | 0:2cb1be240f50 | 838 | sprintf( sbuf, "XX_CLLB_000_%04d", m2_speed ); // M2 Fwd |
sayzyas | 0:2cb1be240f50 | 839 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 840 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 841 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 842 | /* |
sayzyas | 0:2cb1be240f50 | 843 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 844 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 845 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 846 | |
sayzyas | 0:2cb1be240f50 | 847 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 848 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 849 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 850 | { |
sayzyas | 0:2cb1be240f50 | 851 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 852 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 853 | } |
sayzyas | 0:2cb1be240f50 | 854 | */ |
sayzyas | 0:2cb1be240f50 | 855 | } |
sayzyas | 0:2cb1be240f50 | 856 | DEBUG_PRINT_L2("Handy> R-JS Up: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 857 | sprintf(msg, "OX Cr-FLZ "); |
sayzyas | 0:2cb1be240f50 | 858 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 859 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 860 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 861 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 862 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 863 | } |
sayzyas | 0:2cb1be240f50 | 864 | |
sayzyas | 0:2cb1be240f50 | 865 | else if( // Right-lower zone |
sayzyas | 0:2cb1be240f50 | 866 | ( jsr_ud_undata < (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 867 | ( jsr_lr_undata > (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) |
sayzyas | 0:2cb1be240f50 | 868 | ){ |
sayzyas | 0:2cb1be240f50 | 869 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 870 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 871 | { |
sayzyas | 0:2cb1be240f50 | 872 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 873 | } |
sayzyas | 0:2cb1be240f50 | 874 | else |
sayzyas | 0:2cb1be240f50 | 875 | { |
sayzyas | 0:2cb1be240f50 | 876 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 877 | } |
sayzyas | 0:2cb1be240f50 | 878 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 879 | if( (js_center_value_r_ud - jsr_ud_undata) > (jsr_lr_undata - js_center_value_r_lr) ) |
sayzyas | 0:2cb1be240f50 | 880 | { |
sayzyas | 0:2cb1be240f50 | 881 | m2_speed = ( js_center_value_r_ud - jsr_ud_undata ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 882 | m1_speed = 100 - (( jsr_lr_undata - js_center_value_r_lr ) * 100 / js_center_value_r_lr); |
sayzyas | 0:2cb1be240f50 | 883 | sprintf( sbuf, "XX_CLRF_001_%04d", m1_speed ); // M1 Rvs |
sayzyas | 0:2cb1be240f50 | 884 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 885 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 886 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 887 | |
sayzyas | 0:2cb1be240f50 | 888 | sprintf( sbuf, "XX_CLLB_001_%04d", m2_speed ); // M2 Rvs |
sayzyas | 0:2cb1be240f50 | 889 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 890 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 891 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 892 | /* |
sayzyas | 0:2cb1be240f50 | 893 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 894 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 895 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 896 | |
sayzyas | 0:2cb1be240f50 | 897 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 898 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 899 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 900 | { |
sayzyas | 0:2cb1be240f50 | 901 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 902 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 903 | } |
sayzyas | 0:2cb1be240f50 | 904 | */ |
sayzyas | 0:2cb1be240f50 | 905 | } |
sayzyas | 0:2cb1be240f50 | 906 | DEBUG_PRINT_L2("Handy> R-JS Down: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 907 | sprintf(msg, "OX Cr-RRZ "); |
sayzyas | 0:2cb1be240f50 | 908 | //sprintf(msg, "OX C BK RT "); |
sayzyas | 0:2cb1be240f50 | 909 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 910 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 911 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 912 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 913 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 914 | } |
sayzyas | 0:2cb1be240f50 | 915 | |
sayzyas | 0:2cb1be240f50 | 916 | else if( // Left-lower zone |
sayzyas | 0:2cb1be240f50 | 917 | ( jsr_ud_undata < (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 918 | ( jsr_lr_undata < (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) |
sayzyas | 0:2cb1be240f50 | 919 | ){ |
sayzyas | 0:2cb1be240f50 | 920 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 921 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 922 | { |
sayzyas | 0:2cb1be240f50 | 923 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 924 | } |
sayzyas | 0:2cb1be240f50 | 925 | else |
sayzyas | 0:2cb1be240f50 | 926 | { |
sayzyas | 0:2cb1be240f50 | 927 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 928 | } |
sayzyas | 0:2cb1be240f50 | 929 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 930 | if( (js_center_value_r_ud - jsr_ud_undata) > ( js_center_value_r_lr - jsr_lr_undata) ) |
sayzyas | 0:2cb1be240f50 | 931 | { |
sayzyas | 0:2cb1be240f50 | 932 | m1_speed = ( js_center_value_r_ud - jsr_ud_undata ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 933 | m2_speed = 100 - (( js_center_value_r_lr - jsr_lr_undata ) * 100 / js_center_value_r_lr); |
sayzyas | 0:2cb1be240f50 | 934 | sprintf( sbuf, "XX_CLRF_001_%04d", m1_speed ); // M1 Rvs |
sayzyas | 0:2cb1be240f50 | 935 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 936 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 937 | |
sayzyas | 0:2cb1be240f50 | 938 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 939 | sprintf( sbuf, "XX_CLLB_001_%04d", m2_speed ); // M2 Rvs |
sayzyas | 0:2cb1be240f50 | 940 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 941 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 942 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 943 | /* |
sayzyas | 0:2cb1be240f50 | 944 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 945 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 946 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 947 | |
sayzyas | 0:2cb1be240f50 | 948 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 949 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 950 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 951 | { |
sayzyas | 0:2cb1be240f50 | 952 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 953 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 954 | } |
sayzyas | 0:2cb1be240f50 | 955 | */ |
sayzyas | 0:2cb1be240f50 | 956 | } |
sayzyas | 0:2cb1be240f50 | 957 | DEBUG_PRINT_L2("Handy> R-JS Down: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 958 | sprintf(msg, "OX Cr-RLZ "); |
sayzyas | 0:2cb1be240f50 | 959 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 960 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 961 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 962 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 963 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 964 | } |
sayzyas | 0:2cb1be240f50 | 965 | } |
sayzyas | 0:2cb1be240f50 | 966 | else // ON: I-Shape |
sayzyas | 0:2cb1be240f50 | 967 | { |
sayzyas | 0:2cb1be240f50 | 968 | // Right Joystic < Down |
sayzyas | 0:2cb1be240f50 | 969 | if( jsr_ud_undata > (js_center_value_r_ud + + setValue.jsCtrl.rjs_upper_dzone) ){ |
sayzyas | 0:2cb1be240f50 | 970 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 971 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 972 | { |
sayzyas | 0:2cb1be240f50 | 973 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 974 | } |
sayzyas | 0:2cb1be240f50 | 975 | else |
sayzyas | 0:2cb1be240f50 | 976 | { |
sayzyas | 0:2cb1be240f50 | 977 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 978 | } |
sayzyas | 0:2cb1be240f50 | 979 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 980 | m1_speed = adj_crawlerSpeed(( js_center_value_r_ud+1 - (255 - jsr_ud_undata) ) * 100 / js_center_value_r_ud ); // Speed |
sayzyas | 0:2cb1be240f50 | 981 | m2_speed = m1_speed; // Speed |
sayzyas | 0:2cb1be240f50 | 982 | |
sayzyas | 0:2cb1be240f50 | 983 | sprintf( sbuf, "XX_CLRF_001_%04d", m1_speed ); // M1 Rvs |
sayzyas | 0:2cb1be240f50 | 984 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 985 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 986 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 987 | |
sayzyas | 0:2cb1be240f50 | 988 | sprintf( sbuf, "XX_CLLB_000_%04d", m2_speed ); // M2 Fwd |
sayzyas | 0:2cb1be240f50 | 989 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 990 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 991 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 992 | |
sayzyas | 0:2cb1be240f50 | 993 | DEBUG_PRINT_L2("Handy> R-JS Up: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 994 | sprintf(msg, "OX C FW:%03d", (255 - jsr_ud_undata)); |
sayzyas | 0:2cb1be240f50 | 995 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 996 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 997 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 998 | /* |
sayzyas | 0:2cb1be240f50 | 999 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1000 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1001 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1002 | |
sayzyas | 0:2cb1be240f50 | 1003 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1004 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1005 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1006 | { |
sayzyas | 0:2cb1be240f50 | 1007 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1008 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1009 | } |
sayzyas | 0:2cb1be240f50 | 1010 | */ |
sayzyas | 0:2cb1be240f50 | 1011 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 1012 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 1013 | } |
sayzyas | 0:2cb1be240f50 | 1014 | // Right Joystick < Up > |
sayzyas | 0:2cb1be240f50 | 1015 | else if( jsr_ud_undata < (js_center_value_r_ud - + setValue.jsCtrl.rjs_upper_dzone) ){ |
sayzyas | 0:2cb1be240f50 | 1016 | // Crawler reverse Run |
sayzyas | 0:2cb1be240f50 | 1017 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD8); |
sayzyas | 0:2cb1be240f50 | 1018 | if( led_ind_cnt > LED_IND_BLINK_PERIOD8*2 ) |
sayzyas | 0:2cb1be240f50 | 1019 | { |
sayzyas | 0:2cb1be240f50 | 1020 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 1021 | } |
sayzyas | 0:2cb1be240f50 | 1022 | else |
sayzyas | 0:2cb1be240f50 | 1023 | { |
sayzyas | 0:2cb1be240f50 | 1024 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 1025 | } |
sayzyas | 0:2cb1be240f50 | 1026 | led4 = ON; |
sayzyas | 0:2cb1be240f50 | 1027 | m1_speed = adj_crawlerSpeed(( (255 - jsr_ud_undata) - js_center_value_r_ud ) * 100 / js_center_value_r_ud ); // Speed |
sayzyas | 0:2cb1be240f50 | 1028 | m2_speed = m1_speed; // Speed |
sayzyas | 0:2cb1be240f50 | 1029 | sprintf( sbuf, "XX_CLRF_000_%04d", m1_speed ); // M1 Fwd |
sayzyas | 0:2cb1be240f50 | 1030 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1031 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1032 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1033 | |
sayzyas | 0:2cb1be240f50 | 1034 | sprintf( sbuf, "XX_CLLB_001_%04d", m2_speed ); // M2 Rvs |
sayzyas | 0:2cb1be240f50 | 1035 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1036 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1037 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1038 | |
sayzyas | 0:2cb1be240f50 | 1039 | DEBUG_PRINT_L2("Handy> R-JS Down: js_data[%03d], motor_speeed[%03d], js_center[%03d]\r\n", jsr_ud_undata, send_report.data[3], js_center_value_r_ud); |
sayzyas | 0:2cb1be240f50 | 1040 | sprintf(msg, "OX C BK:%03d", (255 - jsr_ud_undata)); |
sayzyas | 0:2cb1be240f50 | 1041 | |
sayzyas | 0:2cb1be240f50 | 1042 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1043 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 1044 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1045 | /* |
sayzyas | 0:2cb1be240f50 | 1046 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1047 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1048 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1049 | |
sayzyas | 0:2cb1be240f50 | 1050 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1051 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1052 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1053 | { |
sayzyas | 0:2cb1be240f50 | 1054 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CRAWLER LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1055 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1056 | } |
sayzyas | 0:2cb1be240f50 | 1057 | */ |
sayzyas | 0:2cb1be240f50 | 1058 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 1059 | Thread::wait(15); // Don't delete, important! |
sayzyas | 0:2cb1be240f50 | 1060 | } |
sayzyas | 0:2cb1be240f50 | 1061 | else{ |
sayzyas | 0:2cb1be240f50 | 1062 | sprintf( sbuf, "XX_CLRF_002_0000" ); // M1 Stop |
sayzyas | 0:2cb1be240f50 | 1063 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1064 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1065 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1066 | |
sayzyas | 0:2cb1be240f50 | 1067 | sprintf( sbuf, "XX_CLLB_002_0000" ); // M2 Stop |
sayzyas | 0:2cb1be240f50 | 1068 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1069 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1070 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1071 | /* |
sayzyas | 0:2cb1be240f50 | 1072 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1073 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1074 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1075 | |
sayzyas | 0:2cb1be240f50 | 1076 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1077 | lcd_dsp(0,0,"OX ",11); |
sayzyas | 0:2cb1be240f50 | 1078 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1079 | */ |
sayzyas | 0:2cb1be240f50 | 1080 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 1081 | led_ind_ptwc = OFF; |
sayzyas | 0:2cb1be240f50 | 1082 | } |
sayzyas | 0:2cb1be240f50 | 1083 | } |
sayzyas | 0:2cb1be240f50 | 1084 | // --------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 1085 | // Other Switch Control: Pass |
sayzyas | 0:2cb1be240f50 | 1086 | // --------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 1087 | if ((sw1 == 0)&&(sw2 == 1)&&(sw3==0)){ // Limit Switch valid |
sayzyas | 0:2cb1be240f50 | 1088 | if( flg_lsw_valid == false ) |
sayzyas | 0:2cb1be240f50 | 1089 | { |
sayzyas | 0:2cb1be240f50 | 1090 | flg_lsw_valid = true; |
sayzyas | 0:2cb1be240f50 | 1091 | //printf("lsw valid\r\n"); |
sayzyas | 0:2cb1be240f50 | 1092 | if( flg_B2 == false ) //B1 |
sayzyas | 0:2cb1be240f50 | 1093 | { |
sayzyas | 0:2cb1be240f50 | 1094 | lcd_dsp(0,1,"------ B1 -----*",16); |
sayzyas | 0:2cb1be240f50 | 1095 | } |
sayzyas | 0:2cb1be240f50 | 1096 | else |
sayzyas | 0:2cb1be240f50 | 1097 | { |
sayzyas | 0:2cb1be240f50 | 1098 | sprintf(msg,"B2Wch [%04d mm]*", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1099 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1100 | lcd_dsp(0,1,msg,16); |
sayzyas | 0:2cb1be240f50 | 1101 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1102 | } |
sayzyas | 0:2cb1be240f50 | 1103 | Thread::wait(700); |
sayzyas | 0:2cb1be240f50 | 1104 | } |
sayzyas | 0:2cb1be240f50 | 1105 | else |
sayzyas | 0:2cb1be240f50 | 1106 | { |
sayzyas | 0:2cb1be240f50 | 1107 | flg_lsw_valid = false; |
sayzyas | 0:2cb1be240f50 | 1108 | //printf("lsw invalid\r\n"); |
sayzyas | 0:2cb1be240f50 | 1109 | if( flg_B2 == false ) //B1 |
sayzyas | 0:2cb1be240f50 | 1110 | { |
sayzyas | 0:2cb1be240f50 | 1111 | lcd_dsp(0,1,"------ B1 ------",16); |
sayzyas | 0:2cb1be240f50 | 1112 | } |
sayzyas | 0:2cb1be240f50 | 1113 | else |
sayzyas | 0:2cb1be240f50 | 1114 | { |
sayzyas | 0:2cb1be240f50 | 1115 | sprintf(msg,"B2Wch [%04d mm] ", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1116 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1117 | lcd_dsp(0,1,msg,16); |
sayzyas | 0:2cb1be240f50 | 1118 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1119 | } |
sayzyas | 0:2cb1be240f50 | 1120 | Thread::wait(700); |
sayzyas | 0:2cb1be240f50 | 1121 | } |
sayzyas | 0:2cb1be240f50 | 1122 | } |
sayzyas | 0:2cb1be240f50 | 1123 | else if ((sw1 == 0)&&(sw2 == 1)&&(sw3==1)){ // RF transform K |
sayzyas | 0:2cb1be240f50 | 1124 | led_ind_run(0, led_ind_cnt_t, LED_IND_BLINK_PERIOD2); |
sayzyas | 0:2cb1be240f50 | 1125 | if( led_ind_cnt_t > LED_IND_BLINK_PERIOD2*2 ) |
sayzyas | 0:2cb1be240f50 | 1126 | { |
sayzyas | 0:2cb1be240f50 | 1127 | led_ind_cnt_t = 0; |
sayzyas | 0:2cb1be240f50 | 1128 | } |
sayzyas | 0:2cb1be240f50 | 1129 | else |
sayzyas | 0:2cb1be240f50 | 1130 | { |
sayzyas | 0:2cb1be240f50 | 1131 | led_ind_cnt_t += 1; |
sayzyas | 0:2cb1be240f50 | 1132 | } |
sayzyas | 0:2cb1be240f50 | 1133 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1134 | { |
sayzyas | 0:2cb1be240f50 | 1135 | sprintf( sbuf, "XX_TFRF_100_0100" ); |
sayzyas | 0:2cb1be240f50 | 1136 | } |
sayzyas | 0:2cb1be240f50 | 1137 | else |
sayzyas | 0:2cb1be240f50 | 1138 | { |
sayzyas | 0:2cb1be240f50 | 1139 | sprintf( sbuf, "XX_TFRF_000_0100" ); |
sayzyas | 0:2cb1be240f50 | 1140 | } |
sayzyas | 0:2cb1be240f50 | 1141 | |
sayzyas | 0:2cb1be240f50 | 1142 | sprintf(msg, "OX Tfm-RFK "); |
sayzyas | 0:2cb1be240f50 | 1143 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1144 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 1145 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1146 | |
sayzyas | 0:2cb1be240f50 | 1147 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1148 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1149 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1150 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1151 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1152 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1153 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1154 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1155 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1156 | { |
sayzyas | 0:2cb1be240f50 | 1157 | DEBUG_PRINT_L5( "Handy(Bd2)> ### TRANSFORM LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1158 | led_tfm_lock = true; |
sayzyas | 0:2cb1be240f50 | 1159 | } |
sayzyas | 0:2cb1be240f50 | 1160 | if( led_tfm_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1161 | { |
sayzyas | 0:2cb1be240f50 | 1162 | led_error_blink( 0, 4 ); |
sayzyas | 0:2cb1be240f50 | 1163 | } |
sayzyas | 0:2cb1be240f50 | 1164 | led3 = 1; |
sayzyas | 0:2cb1be240f50 | 1165 | Thread::wait(15); |
sayzyas | 0:2cb1be240f50 | 1166 | } |
sayzyas | 0:2cb1be240f50 | 1167 | else if ((sw1 == 1)&&(sw2 == 0)&&(sw3==1)){ // RF transform I |
sayzyas | 0:2cb1be240f50 | 1168 | led_ind_run(0, led_ind_cnt_t, LED_IND_BLINK_PERIOD2); |
sayzyas | 0:2cb1be240f50 | 1169 | if( led_ind_cnt_t > LED_IND_BLINK_PERIOD2*2 ) |
sayzyas | 0:2cb1be240f50 | 1170 | { |
sayzyas | 0:2cb1be240f50 | 1171 | led_ind_cnt_t = 0; |
sayzyas | 0:2cb1be240f50 | 1172 | } |
sayzyas | 0:2cb1be240f50 | 1173 | else |
sayzyas | 0:2cb1be240f50 | 1174 | { |
sayzyas | 0:2cb1be240f50 | 1175 | led_ind_cnt_t += 1; |
sayzyas | 0:2cb1be240f50 | 1176 | } |
sayzyas | 0:2cb1be240f50 | 1177 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1178 | { |
sayzyas | 0:2cb1be240f50 | 1179 | sprintf( sbuf, "XX_TFRF_101_0100" ); |
sayzyas | 0:2cb1be240f50 | 1180 | } |
sayzyas | 0:2cb1be240f50 | 1181 | else |
sayzyas | 0:2cb1be240f50 | 1182 | { |
sayzyas | 0:2cb1be240f50 | 1183 | sprintf( sbuf, "XX_TFRF_001_0100" ); |
sayzyas | 0:2cb1be240f50 | 1184 | } |
sayzyas | 0:2cb1be240f50 | 1185 | |
sayzyas | 0:2cb1be240f50 | 1186 | sprintf(msg, "OX Tfm-RFI "); |
sayzyas | 0:2cb1be240f50 | 1187 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1188 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 1189 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1190 | |
sayzyas | 0:2cb1be240f50 | 1191 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1192 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1193 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1194 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1195 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1196 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1197 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1198 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1199 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1200 | { |
sayzyas | 0:2cb1be240f50 | 1201 | DEBUG_PRINT_L5( "Handy(Bd2)> ### TRANSFORM LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1202 | led_tfm_lock = true; |
sayzyas | 0:2cb1be240f50 | 1203 | } |
sayzyas | 0:2cb1be240f50 | 1204 | if( led_tfm_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1205 | { |
sayzyas | 0:2cb1be240f50 | 1206 | led_error_blink( 0, 4 ); |
sayzyas | 0:2cb1be240f50 | 1207 | } |
sayzyas | 0:2cb1be240f50 | 1208 | led3 = 1; |
sayzyas | 0:2cb1be240f50 | 1209 | Thread::wait(15); |
sayzyas | 0:2cb1be240f50 | 1210 | } |
sayzyas | 0:2cb1be240f50 | 1211 | else if ((sw1 == 0)&&(sw2 == 0)&&(sw3==1)){ // LB transform K |
sayzyas | 0:2cb1be240f50 | 1212 | led_ind_run(0, led_ind_cnt_t, LED_IND_BLINK_PERIOD2); |
sayzyas | 0:2cb1be240f50 | 1213 | if( led_ind_cnt_t > LED_IND_BLINK_PERIOD2*2 ) |
sayzyas | 0:2cb1be240f50 | 1214 | { |
sayzyas | 0:2cb1be240f50 | 1215 | led_ind_cnt_t = 0; |
sayzyas | 0:2cb1be240f50 | 1216 | } |
sayzyas | 0:2cb1be240f50 | 1217 | else |
sayzyas | 0:2cb1be240f50 | 1218 | { |
sayzyas | 0:2cb1be240f50 | 1219 | led_ind_cnt_t += 1; |
sayzyas | 0:2cb1be240f50 | 1220 | } |
sayzyas | 0:2cb1be240f50 | 1221 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1222 | { |
sayzyas | 0:2cb1be240f50 | 1223 | sprintf( sbuf, "XX_TFLB_100_0100" ); |
sayzyas | 0:2cb1be240f50 | 1224 | } |
sayzyas | 0:2cb1be240f50 | 1225 | else |
sayzyas | 0:2cb1be240f50 | 1226 | { |
sayzyas | 0:2cb1be240f50 | 1227 | sprintf( sbuf, "XX_TFLB_000_0100" ); |
sayzyas | 0:2cb1be240f50 | 1228 | } |
sayzyas | 0:2cb1be240f50 | 1229 | |
sayzyas | 0:2cb1be240f50 | 1230 | sprintf(msg, "OX Tfm-LBK "); |
sayzyas | 0:2cb1be240f50 | 1231 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1232 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 1233 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1234 | |
sayzyas | 0:2cb1be240f50 | 1235 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1236 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1237 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1238 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1239 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1240 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1241 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1242 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1243 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1244 | { |
sayzyas | 0:2cb1be240f50 | 1245 | DEBUG_PRINT_L5( "Handy(Bd2)> ### TRANSFORM LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1246 | led_tfm_lock = true; |
sayzyas | 0:2cb1be240f50 | 1247 | } |
sayzyas | 0:2cb1be240f50 | 1248 | if( led_tfm_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1249 | { |
sayzyas | 0:2cb1be240f50 | 1250 | led_error_blink( 0, 4 ); |
sayzyas | 0:2cb1be240f50 | 1251 | } |
sayzyas | 0:2cb1be240f50 | 1252 | led3 = 1; |
sayzyas | 0:2cb1be240f50 | 1253 | Thread::wait(15); |
sayzyas | 0:2cb1be240f50 | 1254 | } |
sayzyas | 0:2cb1be240f50 | 1255 | else if ((sw1 == 1)&&(sw2 == 1)&&(sw3==0)){ // LB transform I |
sayzyas | 0:2cb1be240f50 | 1256 | led_ind_run(0, led_ind_cnt_t, LED_IND_BLINK_PERIOD2); |
sayzyas | 0:2cb1be240f50 | 1257 | if( led_ind_cnt_t > LED_IND_BLINK_PERIOD2*2 ) |
sayzyas | 0:2cb1be240f50 | 1258 | { |
sayzyas | 0:2cb1be240f50 | 1259 | led_ind_cnt_t = 0; |
sayzyas | 0:2cb1be240f50 | 1260 | } |
sayzyas | 0:2cb1be240f50 | 1261 | else |
sayzyas | 0:2cb1be240f50 | 1262 | { |
sayzyas | 0:2cb1be240f50 | 1263 | led_ind_cnt_t += 1; |
sayzyas | 0:2cb1be240f50 | 1264 | } |
sayzyas | 0:2cb1be240f50 | 1265 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1266 | { |
sayzyas | 0:2cb1be240f50 | 1267 | sprintf( sbuf, "XX_TFLB_101_0100" ); |
sayzyas | 0:2cb1be240f50 | 1268 | } |
sayzyas | 0:2cb1be240f50 | 1269 | else |
sayzyas | 0:2cb1be240f50 | 1270 | { |
sayzyas | 0:2cb1be240f50 | 1271 | sprintf( sbuf, "XX_TFLB_001_0100" ); |
sayzyas | 0:2cb1be240f50 | 1272 | } |
sayzyas | 0:2cb1be240f50 | 1273 | |
sayzyas | 0:2cb1be240f50 | 1274 | sprintf(msg, "OX Tfm-LBI "); |
sayzyas | 0:2cb1be240f50 | 1275 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1276 | lcd_dsp(0,0,msg,11); |
sayzyas | 0:2cb1be240f50 | 1277 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1278 | |
sayzyas | 0:2cb1be240f50 | 1279 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1280 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1281 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1282 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1283 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1284 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1285 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1286 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1287 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1288 | { |
sayzyas | 0:2cb1be240f50 | 1289 | DEBUG_PRINT_L5( "Handy(Bd2)> ### TRANSFORM LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1290 | led_tfm_lock = true; |
sayzyas | 0:2cb1be240f50 | 1291 | } |
sayzyas | 0:2cb1be240f50 | 1292 | if( led_tfm_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1293 | { |
sayzyas | 0:2cb1be240f50 | 1294 | led_error_blink( 0, 4 ); |
sayzyas | 0:2cb1be240f50 | 1295 | } |
sayzyas | 0:2cb1be240f50 | 1296 | led3 = 1; |
sayzyas | 0:2cb1be240f50 | 1297 | Thread::wait(15); |
sayzyas | 0:2cb1be240f50 | 1298 | } |
sayzyas | 0:2cb1be240f50 | 1299 | else |
sayzyas | 0:2cb1be240f50 | 1300 | { |
sayzyas | 0:2cb1be240f50 | 1301 | sprintf( sbuf, "XX_TFRF_002_0000" ); |
sayzyas | 0:2cb1be240f50 | 1302 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1303 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1304 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1305 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1306 | // rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1307 | // if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1308 | sprintf( sbuf, "XX_TFLB_002_0000" ); |
sayzyas | 0:2cb1be240f50 | 1309 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1310 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1311 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1312 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1313 | // rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1314 | // if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1315 | led3 = OFF; |
sayzyas | 0:2cb1be240f50 | 1316 | led_tfm_lock = false; |
sayzyas | 0:2cb1be240f50 | 1317 | led_ind_tfm = OFF; |
sayzyas | 0:2cb1be240f50 | 1318 | } |
sayzyas | 0:2cb1be240f50 | 1319 | } |
sayzyas | 0:2cb1be240f50 | 1320 | } |
sayzyas | 0:2cb1be240f50 | 1321 | // ********************************************************** |
sayzyas | 0:2cb1be240f50 | 1322 | // B1: Camera pan/tile, B2: Winch control part |
sayzyas | 0:2cb1be240f50 | 1323 | // ********************************************************** |
sayzyas | 0:2cb1be240f50 | 1324 | else{ |
sayzyas | 0:2cb1be240f50 | 1325 | flg_tfmcrwpart_1st = 0; |
sayzyas | 0:2cb1be240f50 | 1326 | led_valid_part2 = 1; |
sayzyas | 0:2cb1be240f50 | 1327 | led_valid_part1 = 0; |
sayzyas | 0:2cb1be240f50 | 1328 | if( flg_wchcptpart_1st == 0 ) |
sayzyas | 0:2cb1be240f50 | 1329 | { |
sayzyas | 0:2cb1be240f50 | 1330 | sprintf( sbuf, "XO_PART_000_0000" ); |
sayzyas | 0:2cb1be240f50 | 1331 | DEBUG_PRINT_L0( "Handy(Bd2)> VALID PART [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1332 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1333 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1334 | Thread::wait(5); |
sayzyas | 0:2cb1be240f50 | 1335 | flg_wchcptpart_1st = 1; |
sayzyas | 0:2cb1be240f50 | 1336 | } |
sayzyas | 0:2cb1be240f50 | 1337 | else |
sayzyas | 0:2cb1be240f50 | 1338 | { |
sayzyas | 0:2cb1be240f50 | 1339 | if((sw1 == 0)&&(sw2 == 1)&&(sw3==0)){ // Winch Position Clear |
sayzyas | 0:2cb1be240f50 | 1340 | sprintf( sbuf, "OO_WCLR_000_0100" ); |
sayzyas | 0:2cb1be240f50 | 1341 | DEBUG_PRINT_L0( "Handy(Bd2)>> Send [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1342 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1343 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1344 | Thread::wait(10); |
sayzyas | 0:2cb1be240f50 | 1345 | } |
sayzyas | 0:2cb1be240f50 | 1346 | if( // Dead zone |
sayzyas | 0:2cb1be240f50 | 1347 | ( jsr_ud_undata >= (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1348 | ( jsr_ud_undata <= (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1349 | ( jsr_lr_undata >= (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1350 | ( jsr_lr_undata <= (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) |
sayzyas | 0:2cb1be240f50 | 1351 | ){ |
sayzyas | 0:2cb1be240f50 | 1352 | if( flg_B2 == false ) // B1 |
sayzyas | 0:2cb1be240f50 | 1353 | { |
sayzyas | 0:2cb1be240f50 | 1354 | |
sayzyas | 0:2cb1be240f50 | 1355 | sprintf( sbuf, "XX_CPAN_002_0000" ); // M2 Stop |
sayzyas | 0:2cb1be240f50 | 1356 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1357 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1358 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1359 | sprintf( sbuf, "XX_CTLT_002_0000" ); // M2 Stop |
sayzyas | 0:2cb1be240f50 | 1360 | DEBUG_PRINT_L0( " [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1361 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1362 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1363 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1364 | if( runcount < 15 ) |
sayzyas | 0:2cb1be240f50 | 1365 | { |
sayzyas | 0:2cb1be240f50 | 1366 | lcd_dsp(0,0,"XO [^] ",16); |
sayzyas | 0:2cb1be240f50 | 1367 | } |
sayzyas | 0:2cb1be240f50 | 1368 | else if ( runcount < 30 ) |
sayzyas | 0:2cb1be240f50 | 1369 | { |
sayzyas | 0:2cb1be240f50 | 1370 | lcd_dsp(0,0,"XO [>] ",16); |
sayzyas | 0:2cb1be240f50 | 1371 | } |
sayzyas | 0:2cb1be240f50 | 1372 | else if(runcount < 45 ) |
sayzyas | 0:2cb1be240f50 | 1373 | { |
sayzyas | 0:2cb1be240f50 | 1374 | lcd_dsp(0,0,"XO [v] ",16); |
sayzyas | 0:2cb1be240f50 | 1375 | } |
sayzyas | 0:2cb1be240f50 | 1376 | else{ |
sayzyas | 0:2cb1be240f50 | 1377 | lcd_dsp(0,0,"XO [<] ",16); |
sayzyas | 0:2cb1be240f50 | 1378 | } |
sayzyas | 0:2cb1be240f50 | 1379 | if( runcount >= 60 ) |
sayzyas | 0:2cb1be240f50 | 1380 | { |
sayzyas | 0:2cb1be240f50 | 1381 | runcount = 0; |
sayzyas | 0:2cb1be240f50 | 1382 | } |
sayzyas | 0:2cb1be240f50 | 1383 | else |
sayzyas | 0:2cb1be240f50 | 1384 | { |
sayzyas | 0:2cb1be240f50 | 1385 | runcount++; |
sayzyas | 0:2cb1be240f50 | 1386 | }; |
sayzyas | 0:2cb1be240f50 | 1387 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1388 | Thread::wait(2); |
sayzyas | 0:2cb1be240f50 | 1389 | led_ind_ptwc = OFF; |
sayzyas | 0:2cb1be240f50 | 1390 | } |
sayzyas | 0:2cb1be240f50 | 1391 | else // B2 |
sayzyas | 0:2cb1be240f50 | 1392 | { |
sayzyas | 0:2cb1be240f50 | 1393 | sprintf( sbuf, "XX_WICH_002_0000" ); |
sayzyas | 0:2cb1be240f50 | 1394 | DEBUG_PRINT_L0( "Handy(Bd2)> BTN WCH STOP [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1395 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1396 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1397 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1398 | //lcd_dsp(0,0,"XO ",11); |
sayzyas | 0:2cb1be240f50 | 1399 | |
sayzyas | 0:2cb1be240f50 | 1400 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1401 | if( runcount < 15 ) |
sayzyas | 0:2cb1be240f50 | 1402 | { |
sayzyas | 0:2cb1be240f50 | 1403 | lcd_dsp(0,0,"XO [^] ",16); |
sayzyas | 0:2cb1be240f50 | 1404 | } |
sayzyas | 0:2cb1be240f50 | 1405 | else if ( runcount < 30 ) |
sayzyas | 0:2cb1be240f50 | 1406 | { |
sayzyas | 0:2cb1be240f50 | 1407 | lcd_dsp(0,0,"XO [>] ",16); |
sayzyas | 0:2cb1be240f50 | 1408 | } |
sayzyas | 0:2cb1be240f50 | 1409 | else if(runcount < 45 ) |
sayzyas | 0:2cb1be240f50 | 1410 | { |
sayzyas | 0:2cb1be240f50 | 1411 | lcd_dsp(0,0,"XO [v] ",16); |
sayzyas | 0:2cb1be240f50 | 1412 | } |
sayzyas | 0:2cb1be240f50 | 1413 | else{ |
sayzyas | 0:2cb1be240f50 | 1414 | lcd_dsp(0,0,"XO [<] ",16); |
sayzyas | 0:2cb1be240f50 | 1415 | } |
sayzyas | 0:2cb1be240f50 | 1416 | if( runcount >= 60 ) |
sayzyas | 0:2cb1be240f50 | 1417 | { |
sayzyas | 0:2cb1be240f50 | 1418 | runcount = 0; |
sayzyas | 0:2cb1be240f50 | 1419 | } |
sayzyas | 0:2cb1be240f50 | 1420 | else |
sayzyas | 0:2cb1be240f50 | 1421 | { |
sayzyas | 0:2cb1be240f50 | 1422 | runcount++; |
sayzyas | 0:2cb1be240f50 | 1423 | }; |
sayzyas | 0:2cb1be240f50 | 1424 | |
sayzyas | 0:2cb1be240f50 | 1425 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1426 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1427 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1428 | |
sayzyas | 0:2cb1be240f50 | 1429 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1430 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1431 | DEBUG_PRINT_L0( "Handy(Bd2)> Winch Position [%04d]\r\n", tmpPosition ); |
sayzyas | 0:2cb1be240f50 | 1432 | if( tmpPosition != 9999 ) |
sayzyas | 0:2cb1be240f50 | 1433 | { |
sayzyas | 0:2cb1be240f50 | 1434 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1435 | { |
sayzyas | 0:2cb1be240f50 | 1436 | sprintf(msg,"B2Wch [%04d mm]*", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1437 | } |
sayzyas | 0:2cb1be240f50 | 1438 | else |
sayzyas | 0:2cb1be240f50 | 1439 | { |
sayzyas | 0:2cb1be240f50 | 1440 | sprintf(msg,"B2Wch [%04d mm] ", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1441 | } |
sayzyas | 0:2cb1be240f50 | 1442 | } |
sayzyas | 0:2cb1be240f50 | 1443 | else |
sayzyas | 0:2cb1be240f50 | 1444 | { |
sayzyas | 0:2cb1be240f50 | 1445 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1446 | { |
sayzyas | 0:2cb1be240f50 | 1447 | sprintf(msg,"B2Wch [**** mm]*"); |
sayzyas | 0:2cb1be240f50 | 1448 | } |
sayzyas | 0:2cb1be240f50 | 1449 | else |
sayzyas | 0:2cb1be240f50 | 1450 | { |
sayzyas | 0:2cb1be240f50 | 1451 | sprintf(msg,"B2Wch [**** mm] "); |
sayzyas | 0:2cb1be240f50 | 1452 | } |
sayzyas | 0:2cb1be240f50 | 1453 | } |
sayzyas | 0:2cb1be240f50 | 1454 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1455 | lcd_dsp(0,1,msg,16); |
sayzyas | 0:2cb1be240f50 | 1456 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1457 | led_ind_ptwc = OFF; |
sayzyas | 0:2cb1be240f50 | 1458 | } |
sayzyas | 0:2cb1be240f50 | 1459 | led2 = 0; |
sayzyas | 0:2cb1be240f50 | 1460 | led3 = 0; |
sayzyas | 0:2cb1be240f50 | 1461 | led_ind_ptwc = 0; |
sayzyas | 0:2cb1be240f50 | 1462 | led_ptwc_lock = false; |
sayzyas | 0:2cb1be240f50 | 1463 | } |
sayzyas | 0:2cb1be240f50 | 1464 | else if( // PAN zone |
sayzyas | 0:2cb1be240f50 | 1465 | ( jsr_lr_undata >= (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1466 | ( jsr_ud_undata >= (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1467 | ( jsr_ud_undata <= (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1468 | ( flg_B2 == false ) |
sayzyas | 0:2cb1be240f50 | 1469 | ){ |
sayzyas | 0:2cb1be240f50 | 1470 | led2 = 1; |
sayzyas | 0:2cb1be240f50 | 1471 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD); |
sayzyas | 0:2cb1be240f50 | 1472 | if( led_ind_cnt > LED_IND_BLINK_PERIOD*2 ) |
sayzyas | 0:2cb1be240f50 | 1473 | { |
sayzyas | 0:2cb1be240f50 | 1474 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 1475 | } |
sayzyas | 0:2cb1be240f50 | 1476 | else |
sayzyas | 0:2cb1be240f50 | 1477 | { |
sayzyas | 0:2cb1be240f50 | 1478 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 1479 | } |
sayzyas | 0:2cb1be240f50 | 1480 | m1_speed = ( jsr_lr_undata - js_center_value_r_lr ) * 100 / js_center_value_r_lr; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1481 | sprintf( sbuf, "XX_CPAN_000_%04d", m1_speed ); |
sayzyas | 0:2cb1be240f50 | 1482 | DEBUG_PRINT_L0( "Handy(Bd2)> BTN PAN CW [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1483 | // Send command to host. |
sayzyas | 0:2cb1be240f50 | 1484 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1485 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1486 | |
sayzyas | 0:2cb1be240f50 | 1487 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1488 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1489 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1490 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1491 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1492 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1493 | { |
sayzyas | 0:2cb1be240f50 | 1494 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CCAMERA TILT LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1495 | led_ptwc_lock = true; |
sayzyas | 0:2cb1be240f50 | 1496 | } |
sayzyas | 0:2cb1be240f50 | 1497 | else |
sayzyas | 0:2cb1be240f50 | 1498 | { |
sayzyas | 0:2cb1be240f50 | 1499 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1500 | lcd_dsp(0,0,"XO PAN CW ",11); |
sayzyas | 0:2cb1be240f50 | 1501 | lcd_dsp(0,1,"------ B1 ------",16); |
sayzyas | 0:2cb1be240f50 | 1502 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1503 | } |
sayzyas | 0:2cb1be240f50 | 1504 | if( led_ptwc_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1505 | { |
sayzyas | 0:2cb1be240f50 | 1506 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1507 | } |
sayzyas | 0:2cb1be240f50 | 1508 | } |
sayzyas | 0:2cb1be240f50 | 1509 | else if( // Left turn zone |
sayzyas | 0:2cb1be240f50 | 1510 | ( jsr_lr_undata <= (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1511 | ( jsr_ud_undata >= (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1512 | ( jsr_ud_undata <= (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1513 | ( flg_B2 == false ) |
sayzyas | 0:2cb1be240f50 | 1514 | ){ |
sayzyas | 0:2cb1be240f50 | 1515 | led2 = 1; |
sayzyas | 0:2cb1be240f50 | 1516 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD); |
sayzyas | 0:2cb1be240f50 | 1517 | if( led_ind_cnt > LED_IND_BLINK_PERIOD*2 ) |
sayzyas | 0:2cb1be240f50 | 1518 | { |
sayzyas | 0:2cb1be240f50 | 1519 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 1520 | } |
sayzyas | 0:2cb1be240f50 | 1521 | else |
sayzyas | 0:2cb1be240f50 | 1522 | { |
sayzyas | 0:2cb1be240f50 | 1523 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 1524 | } |
sayzyas | 0:2cb1be240f50 | 1525 | m1_speed = ( js_center_value_r_lr - jsr_lr_undata ) * 100 / js_center_value_r_lr; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1526 | sprintf( sbuf, "XX_CPAN_001_%04d", m1_speed ); |
sayzyas | 0:2cb1be240f50 | 1527 | DEBUG_PRINT_L0( "Handy(Bd2)> BTN PAN CCW[%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1528 | // Send command to host. |
sayzyas | 0:2cb1be240f50 | 1529 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1530 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1531 | |
sayzyas | 0:2cb1be240f50 | 1532 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1533 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1534 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1535 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1536 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1537 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1538 | { |
sayzyas | 0:2cb1be240f50 | 1539 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CCAMERA TILT LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1540 | led_ptwc_lock = true; |
sayzyas | 0:2cb1be240f50 | 1541 | } |
sayzyas | 0:2cb1be240f50 | 1542 | else |
sayzyas | 0:2cb1be240f50 | 1543 | { |
sayzyas | 0:2cb1be240f50 | 1544 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1545 | lcd_dsp(0,0,"XO PAN CCW ",11); |
sayzyas | 0:2cb1be240f50 | 1546 | lcd_dsp(0,1,"------ B1 ------",16); |
sayzyas | 0:2cb1be240f50 | 1547 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1548 | } |
sayzyas | 0:2cb1be240f50 | 1549 | if( led_ptwc_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1550 | { |
sayzyas | 0:2cb1be240f50 | 1551 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1552 | } |
sayzyas | 0:2cb1be240f50 | 1553 | } |
sayzyas | 0:2cb1be240f50 | 1554 | // Down |
sayzyas | 0:2cb1be240f50 | 1555 | else if( // Down Motor forward |
sayzyas | 0:2cb1be240f50 | 1556 | ( jsr_ud_undata < (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1557 | ( jsr_lr_undata > (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1558 | ( jsr_lr_undata < (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1559 | ( flg_B2 == false) |
sayzyas | 0:2cb1be240f50 | 1560 | ){ |
sayzyas | 0:2cb1be240f50 | 1561 | led2 = ON; |
sayzyas | 0:2cb1be240f50 | 1562 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD); |
sayzyas | 0:2cb1be240f50 | 1563 | if( led_ind_cnt > LED_IND_BLINK_PERIOD*2 ) |
sayzyas | 0:2cb1be240f50 | 1564 | { |
sayzyas | 0:2cb1be240f50 | 1565 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 1566 | } |
sayzyas | 0:2cb1be240f50 | 1567 | else |
sayzyas | 0:2cb1be240f50 | 1568 | { |
sayzyas | 0:2cb1be240f50 | 1569 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 1570 | } |
sayzyas | 0:2cb1be240f50 | 1571 | m2_speed = ( js_center_value_r_ud - jsr_ud_undata ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1572 | //m2_speed = ( jsr_ud_undata - js_center_value_r_ud ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1573 | sprintf( sbuf, "XX_CTLT_000_%04d", m2_speed ); |
sayzyas | 0:2cb1be240f50 | 1574 | DEBUG_PRINT_L0( "Handy(Bd2)> BTN TILT CW [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1575 | // Send command to host. |
sayzyas | 0:2cb1be240f50 | 1576 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1577 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1578 | |
sayzyas | 0:2cb1be240f50 | 1579 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1580 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1581 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1582 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1583 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1584 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1585 | { |
sayzyas | 0:2cb1be240f50 | 1586 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CCAMERA TILT LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1587 | led_ptwc_lock = true; |
sayzyas | 0:2cb1be240f50 | 1588 | } |
sayzyas | 0:2cb1be240f50 | 1589 | else |
sayzyas | 0:2cb1be240f50 | 1590 | { |
sayzyas | 0:2cb1be240f50 | 1591 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1592 | lcd_dsp(0,0,"XO TLT Down",11); |
sayzyas | 0:2cb1be240f50 | 1593 | lcd_dsp(0,1,"------ B1 ------",16); |
sayzyas | 0:2cb1be240f50 | 1594 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1595 | } |
sayzyas | 0:2cb1be240f50 | 1596 | if( led_ptwc_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1597 | { |
sayzyas | 0:2cb1be240f50 | 1598 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1599 | } |
sayzyas | 0:2cb1be240f50 | 1600 | } |
sayzyas | 0:2cb1be240f50 | 1601 | else if( // Up motor reverse |
sayzyas | 0:2cb1be240f50 | 1602 | ( jsr_ud_undata > (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1603 | ( jsr_lr_undata > (js_center_value_r_lr - setValue.jsCtrl.rjs_left_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1604 | ( jsr_lr_undata < (js_center_value_r_lr + setValue.jsCtrl.rjs_right_dzone*2)) && |
sayzyas | 0:2cb1be240f50 | 1605 | ( flg_B2 == false) |
sayzyas | 0:2cb1be240f50 | 1606 | ){ |
sayzyas | 0:2cb1be240f50 | 1607 | led2 = 1; |
sayzyas | 0:2cb1be240f50 | 1608 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD); |
sayzyas | 0:2cb1be240f50 | 1609 | if( led_ind_cnt > LED_IND_BLINK_PERIOD*2 ) |
sayzyas | 0:2cb1be240f50 | 1610 | { |
sayzyas | 0:2cb1be240f50 | 1611 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 1612 | } |
sayzyas | 0:2cb1be240f50 | 1613 | else |
sayzyas | 0:2cb1be240f50 | 1614 | { |
sayzyas | 0:2cb1be240f50 | 1615 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 1616 | } |
sayzyas | 0:2cb1be240f50 | 1617 | m2_speed = ( jsr_ud_undata - js_center_value_r_ud ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1618 | // m2_speed = ( js_center_value_r_ud - jsr_ud_undata ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1619 | sprintf( sbuf, "XX_CTLT_001_%04d", m2_speed ); |
sayzyas | 0:2cb1be240f50 | 1620 | DEBUG_PRINT_L0( "Handy(Bd2)> BTN TLT CCW[%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1621 | // Send command to host. |
sayzyas | 0:2cb1be240f50 | 1622 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1623 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1624 | |
sayzyas | 0:2cb1be240f50 | 1625 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1626 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1627 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1628 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1629 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1630 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1631 | { |
sayzyas | 0:2cb1be240f50 | 1632 | DEBUG_PRINT_L0( "Handy(Bd2)> ### CCAMERA TILT LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1633 | led_ptwc_lock = true; |
sayzyas | 0:2cb1be240f50 | 1634 | } |
sayzyas | 0:2cb1be240f50 | 1635 | else |
sayzyas | 0:2cb1be240f50 | 1636 | { |
sayzyas | 0:2cb1be240f50 | 1637 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1638 | lcd_dsp(0,0,"XO TILT Up ",11); |
sayzyas | 0:2cb1be240f50 | 1639 | lcd_dsp(0,1,"------ B1 ------",16); |
sayzyas | 0:2cb1be240f50 | 1640 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1641 | } |
sayzyas | 0:2cb1be240f50 | 1642 | if( led_ptwc_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1643 | { |
sayzyas | 0:2cb1be240f50 | 1644 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1645 | } |
sayzyas | 0:2cb1be240f50 | 1646 | } |
sayzyas | 0:2cb1be240f50 | 1647 | // Down Motor forward |
sayzyas | 0:2cb1be240f50 | 1648 | else if( |
sayzyas | 0:2cb1be240f50 | 1649 | ( jsr_ud_undata < (js_center_value_r_ud - setValue.jsCtrl.rjs_lower_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1650 | |
sayzyas | 0:2cb1be240f50 | 1651 | ( jsr_lr_undata > (js_center_value_r_lr - 25 * setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1652 | ( jsr_lr_undata < (js_center_value_r_lr + 25 * setValue.jsCtrl.rjs_right_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1653 | ( flg_B2 == true ) |
sayzyas | 0:2cb1be240f50 | 1654 | ){ |
sayzyas | 0:2cb1be240f50 | 1655 | led2 = ON; |
sayzyas | 0:2cb1be240f50 | 1656 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD); |
sayzyas | 0:2cb1be240f50 | 1657 | if( led_ind_cnt > LED_IND_BLINK_PERIOD*2 ) |
sayzyas | 0:2cb1be240f50 | 1658 | { |
sayzyas | 0:2cb1be240f50 | 1659 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 1660 | } |
sayzyas | 0:2cb1be240f50 | 1661 | else |
sayzyas | 0:2cb1be240f50 | 1662 | { |
sayzyas | 0:2cb1be240f50 | 1663 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 1664 | } |
sayzyas | 0:2cb1be240f50 | 1665 | m1_speed = ( js_center_value_r_ud - jsr_ud_undata ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1666 | sprintf( sbuf, "XX_WICH_000_%04d", m1_speed ); |
sayzyas | 0:2cb1be240f50 | 1667 | DEBUG_PRINT_L0( "Handy(Bd2)> BTN WCH DN [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1668 | // Send command to host. |
sayzyas | 0:2cb1be240f50 | 1669 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1670 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1671 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1672 | lcd_dsp(0,0,"XO W Down ",11); |
sayzyas | 0:2cb1be240f50 | 1673 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1674 | // Receive winch position from host. |
sayzyas | 0:2cb1be240f50 | 1675 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1676 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1677 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1678 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1679 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1680 | { |
sayzyas | 0:2cb1be240f50 | 1681 | DEBUG_PRINT_L0( "Handy(Bd2)> ### WINCH LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1682 | led_ptwc_lock = true; |
sayzyas | 0:2cb1be240f50 | 1683 | } |
sayzyas | 0:2cb1be240f50 | 1684 | else |
sayzyas | 0:2cb1be240f50 | 1685 | { |
sayzyas | 0:2cb1be240f50 | 1686 | DEBUG_PRINT_L0( "Handy(Bd2)> Winch Position [%04d]\r\n", tmpPosition ); |
sayzyas | 0:2cb1be240f50 | 1687 | sprintf(msg,"B2Wch [%04d mm] ", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1688 | if( tmpPosition != 9999 ) |
sayzyas | 0:2cb1be240f50 | 1689 | { |
sayzyas | 0:2cb1be240f50 | 1690 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1691 | { |
sayzyas | 0:2cb1be240f50 | 1692 | sprintf(msg,"B2Wch [%04d mm]*", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1693 | } |
sayzyas | 0:2cb1be240f50 | 1694 | else |
sayzyas | 0:2cb1be240f50 | 1695 | { |
sayzyas | 0:2cb1be240f50 | 1696 | sprintf(msg,"B2Wch [%04d mm] ", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1697 | } |
sayzyas | 0:2cb1be240f50 | 1698 | } |
sayzyas | 0:2cb1be240f50 | 1699 | else |
sayzyas | 0:2cb1be240f50 | 1700 | { |
sayzyas | 0:2cb1be240f50 | 1701 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1702 | { |
sayzyas | 0:2cb1be240f50 | 1703 | sprintf(msg,"B2Wch [**** mm]*"); |
sayzyas | 0:2cb1be240f50 | 1704 | } |
sayzyas | 0:2cb1be240f50 | 1705 | else |
sayzyas | 0:2cb1be240f50 | 1706 | { |
sayzyas | 0:2cb1be240f50 | 1707 | sprintf(msg,"B2Wch [**** mm] "); |
sayzyas | 0:2cb1be240f50 | 1708 | } |
sayzyas | 0:2cb1be240f50 | 1709 | } |
sayzyas | 0:2cb1be240f50 | 1710 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1711 | lcd_dsp(0,1,msg,16); |
sayzyas | 0:2cb1be240f50 | 1712 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1713 | } |
sayzyas | 0:2cb1be240f50 | 1714 | if( led_ptwc_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1715 | { |
sayzyas | 0:2cb1be240f50 | 1716 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1717 | } |
sayzyas | 0:2cb1be240f50 | 1718 | } |
sayzyas | 0:2cb1be240f50 | 1719 | // Up motor reverse |
sayzyas | 0:2cb1be240f50 | 1720 | else if( |
sayzyas | 0:2cb1be240f50 | 1721 | ( jsr_ud_undata > (js_center_value_r_ud + setValue.jsCtrl.rjs_upper_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1722 | ( jsr_lr_undata > (js_center_value_r_lr - 25 * setValue.jsCtrl.rjs_left_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1723 | ( jsr_lr_undata < (js_center_value_r_lr + 25 * setValue.jsCtrl.rjs_right_dzone)) && |
sayzyas | 0:2cb1be240f50 | 1724 | ( flg_B2 == true ) |
sayzyas | 0:2cb1be240f50 | 1725 | ){ |
sayzyas | 0:2cb1be240f50 | 1726 | led2 = 1; |
sayzyas | 0:2cb1be240f50 | 1727 | led_ind_run(1, led_ind_cnt, LED_IND_BLINK_PERIOD); |
sayzyas | 0:2cb1be240f50 | 1728 | if( led_ind_cnt > LED_IND_BLINK_PERIOD*2 ) |
sayzyas | 0:2cb1be240f50 | 1729 | { |
sayzyas | 0:2cb1be240f50 | 1730 | led_ind_cnt = 0; |
sayzyas | 0:2cb1be240f50 | 1731 | } |
sayzyas | 0:2cb1be240f50 | 1732 | else |
sayzyas | 0:2cb1be240f50 | 1733 | { |
sayzyas | 0:2cb1be240f50 | 1734 | led_ind_cnt += 1; |
sayzyas | 0:2cb1be240f50 | 1735 | } |
sayzyas | 0:2cb1be240f50 | 1736 | m1_speed = ( jsr_ud_undata - js_center_value_r_ud ) * 100 / js_center_value_r_ud; // Speed ratio |
sayzyas | 0:2cb1be240f50 | 1737 | sprintf( sbuf, "XX_WICH_001_%04d", m1_speed ); |
sayzyas | 0:2cb1be240f50 | 1738 | DEBUG_PRINT_L0( "Handy(Bd2)> BTN WCH UP [%s]\r\n", sbuf ); |
sayzyas | 0:2cb1be240f50 | 1739 | // Send command to host |
sayzyas | 0:2cb1be240f50 | 1740 | rts = tsocket.send_all(sbuf, sizeof(sbuf)); |
sayzyas | 0:2cb1be240f50 | 1741 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1742 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1743 | lcd_dsp(0,0,"XO W Up ",11); |
sayzyas | 0:2cb1be240f50 | 1744 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1745 | // Receive winch position from host |
sayzyas | 0:2cb1be240f50 | 1746 | rts = tsocket.receive( rbuf, sizeof(rbuf)); |
sayzyas | 0:2cb1be240f50 | 1747 | if( rts < 0 ) break; |
sayzyas | 0:2cb1be240f50 | 1748 | rbuf[4] = '\0'; |
sayzyas | 0:2cb1be240f50 | 1749 | tmpPosition = atoi( rbuf ); |
sayzyas | 0:2cb1be240f50 | 1750 | if( tmpPosition == 9999 ) |
sayzyas | 0:2cb1be240f50 | 1751 | { |
sayzyas | 0:2cb1be240f50 | 1752 | DEBUG_PRINT_L0( "Handy(Bd2)> ### WWINCH LOCK DETECTION ###\r\n" ); |
sayzyas | 0:2cb1be240f50 | 1753 | led_ptwc_lock = true; |
sayzyas | 0:2cb1be240f50 | 1754 | } |
sayzyas | 0:2cb1be240f50 | 1755 | else |
sayzyas | 0:2cb1be240f50 | 1756 | { |
sayzyas | 0:2cb1be240f50 | 1757 | DEBUG_PRINT_L0( "Handy(Bd2)> Winch Position [%04d]\r\n", tmpPosition ); |
sayzyas | 0:2cb1be240f50 | 1758 | sprintf(msg,"B2Wch [%04d mm] ", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1759 | if( tmpPosition != 9999 ) |
sayzyas | 0:2cb1be240f50 | 1760 | { |
sayzyas | 0:2cb1be240f50 | 1761 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1762 | { |
sayzyas | 0:2cb1be240f50 | 1763 | sprintf(msg,"B2Wch [%04d mm]*", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1764 | } |
sayzyas | 0:2cb1be240f50 | 1765 | else |
sayzyas | 0:2cb1be240f50 | 1766 | { |
sayzyas | 0:2cb1be240f50 | 1767 | sprintf(msg,"B2Wch [%04d mm] ", tmpPosition); |
sayzyas | 0:2cb1be240f50 | 1768 | } |
sayzyas | 0:2cb1be240f50 | 1769 | } |
sayzyas | 0:2cb1be240f50 | 1770 | else |
sayzyas | 0:2cb1be240f50 | 1771 | { |
sayzyas | 0:2cb1be240f50 | 1772 | if( flg_lsw_valid == true ) |
sayzyas | 0:2cb1be240f50 | 1773 | { |
sayzyas | 0:2cb1be240f50 | 1774 | sprintf(msg,"B2Wch [**** mm]*"); |
sayzyas | 0:2cb1be240f50 | 1775 | } |
sayzyas | 0:2cb1be240f50 | 1776 | else |
sayzyas | 0:2cb1be240f50 | 1777 | { |
sayzyas | 0:2cb1be240f50 | 1778 | sprintf(msg,"B2Wch [**** mm] "); |
sayzyas | 0:2cb1be240f50 | 1779 | } |
sayzyas | 0:2cb1be240f50 | 1780 | } |
sayzyas | 0:2cb1be240f50 | 1781 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1782 | lcd_dsp(0,1,msg,16); |
sayzyas | 0:2cb1be240f50 | 1783 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1784 | } |
sayzyas | 0:2cb1be240f50 | 1785 | if( led_ptwc_lock == true ) |
sayzyas | 0:2cb1be240f50 | 1786 | { |
sayzyas | 0:2cb1be240f50 | 1787 | led_error_blink( 1, 4 ); |
sayzyas | 0:2cb1be240f50 | 1788 | } |
sayzyas | 0:2cb1be240f50 | 1789 | } |
sayzyas | 0:2cb1be240f50 | 1790 | } |
sayzyas | 0:2cb1be240f50 | 1791 | } |
sayzyas | 0:2cb1be240f50 | 1792 | Thread::wait(5); |
sayzyas | 0:2cb1be240f50 | 1793 | } |
sayzyas | 0:2cb1be240f50 | 1794 | lcd_dsp(0,0,"!!Eth error",11); |
sayzyas | 0:2cb1be240f50 | 1795 | tsocket.close(); |
sayzyas | 0:2cb1be240f50 | 1796 | } |
sayzyas | 0:2cb1be240f50 | 1797 | |
sayzyas | 0:2cb1be240f50 | 1798 | } |
sayzyas | 0:2cb1be240f50 | 1799 | else{ |
sayzyas | 0:2cb1be240f50 | 1800 | cf_led_error( &led1,&led2,&led3,&led4 ); |
sayzyas | 0:2cb1be240f50 | 1801 | DEBUG_PRINT_L0("Handy(Bd2)> ###ERROR### Eternet connect Fali\r\n"); |
sayzyas | 0:2cb1be240f50 | 1802 | DEBUG_PRINT_L0("Handy(Bd2)> This programis booting in Stand alone mode.\r\n"); |
sayzyas | 0:2cb1be240f50 | 1803 | flg_system_ok = false; |
sayzyas | 0:2cb1be240f50 | 1804 | } |
sayzyas | 0:2cb1be240f50 | 1805 | } |
sayzyas | 0:2cb1be240f50 | 1806 | else{ |
sayzyas | 0:2cb1be240f50 | 1807 | DEBUG_PRINT_L0("Handy(Bd2)> ###ERROR### Eternet init Fail\r\n"); |
sayzyas | 0:2cb1be240f50 | 1808 | DEBUG_PRINT_L0("Handy(Bd2)> This programis booting in Stand alone mode.\r\n"); |
sayzyas | 0:2cb1be240f50 | 1809 | flg_system_ok = false; |
sayzyas | 0:2cb1be240f50 | 1810 | } |
sayzyas | 0:2cb1be240f50 | 1811 | } |
sayzyas | 0:2cb1be240f50 | 1812 | |
sayzyas | 0:2cb1be240f50 | 1813 | // ====================================================================== |
sayzyas | 0:2cb1be240f50 | 1814 | // Read setting value from lpcal file system of mbed |
sayzyas | 0:2cb1be240f50 | 1815 | // ====================================================================== |
sayzyas | 0:2cb1be240f50 | 1816 | bool read_LFS( setValue_t* setValue ){ |
sayzyas | 0:2cb1be240f50 | 1817 | FILE *fp; |
sayzyas | 0:2cb1be240f50 | 1818 | char *fname = "/local/jsset.txt"; |
sayzyas | 0:2cb1be240f50 | 1819 | char s[150]; |
sayzyas | 0:2cb1be240f50 | 1820 | int c; |
sayzyas | 0:2cb1be240f50 | 1821 | int data; |
sayzyas | 0:2cb1be240f50 | 1822 | bool rts; |
sayzyas | 0:2cb1be240f50 | 1823 | |
sayzyas | 0:2cb1be240f50 | 1824 | flg_mutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1825 | fp = fopen(fname, "r"); |
sayzyas | 0:2cb1be240f50 | 1826 | if( fp != NULL ){ // Open "set.txt" on the local file system for writing |
sayzyas | 0:2cb1be240f50 | 1827 | c = getc(fp); |
sayzyas | 0:2cb1be240f50 | 1828 | if( c != '#' ){ |
sayzyas | 0:2cb1be240f50 | 1829 | pc.printf( "#### ERROR This is not a setting file ####\r\n"); |
sayzyas | 0:2cb1be240f50 | 1830 | rts = false; |
sayzyas | 0:2cb1be240f50 | 1831 | } |
sayzyas | 0:2cb1be240f50 | 1832 | else{ |
sayzyas | 0:2cb1be240f50 | 1833 | fgets( s, 100, fp ); |
sayzyas | 0:2cb1be240f50 | 1834 | pc.printf( "%s", s ); |
sayzyas | 0:2cb1be240f50 | 1835 | fscanf(fp,"%03d",&data);setValue->jsCtrl.rjs_upper_dzone=data; pc.printf("R-JS upper = %03d",setValue->jsCtrl.rjs_upper_dzone); fgets(s,100,fp); pc.printf("%s",s ); |
sayzyas | 0:2cb1be240f50 | 1836 | fscanf(fp,"%03d",&data);setValue->jsCtrl.rjs_lower_dzone=data; pc.printf("R-JS lower = %03d",setValue->jsCtrl.rjs_lower_dzone); fgets(s,100,fp); pc.printf("%s",s ); |
sayzyas | 0:2cb1be240f50 | 1837 | fscanf(fp,"%03d",&data);setValue->jsCtrl.rjs_right_dzone=data; pc.printf("R-JS upper = %03d",setValue->jsCtrl.rjs_right_dzone); fgets(s,100,fp); pc.printf("%s",s ); |
sayzyas | 0:2cb1be240f50 | 1838 | fscanf(fp,"%03d",&data);setValue->jsCtrl.rjs_left_dzone=data; pc.printf("R-JS lower = %03d",setValue->jsCtrl.rjs_left_dzone); fgets(s,100,fp); pc.printf("%s",s ); |
sayzyas | 0:2cb1be240f50 | 1839 | fscanf(fp,"%03d",&data);setValue->jsCtrl.reserved_1=data; pc.printf("%03d",setValue->jsCtrl.reserved_1); fgets(s,100,fp); pc.printf("%s",s); |
sayzyas | 0:2cb1be240f50 | 1840 | fscanf(fp,"%03d",&data);setValue->jsCtrl.reserved_2=data; pc.printf("%03d",setValue->jsCtrl.reserved_2); fgets(s,100,fp); pc.printf("%s",s); |
sayzyas | 0:2cb1be240f50 | 1841 | fscanf(fp,"%03d",&data);setValue->jsCtrl.reserved_3=data; pc.printf("%03d",setValue->jsCtrl.reserved_3); fgets(s,100,fp); pc.printf("%s",s); |
sayzyas | 0:2cb1be240f50 | 1842 | fscanf(fp,"%03d",&data);setValue->jsCtrl.reserved_4=data; pc.printf("%03d",setValue->jsCtrl.reserved_4); fgets(s,100,fp); pc.printf("%s",s); |
sayzyas | 0:2cb1be240f50 | 1843 | } |
sayzyas | 0:2cb1be240f50 | 1844 | fclose(fp); |
sayzyas | 0:2cb1be240f50 | 1845 | rts = true; |
sayzyas | 0:2cb1be240f50 | 1846 | } |
sayzyas | 0:2cb1be240f50 | 1847 | else{ |
sayzyas | 0:2cb1be240f50 | 1848 | pc.printf( "#### ERROR local file open error ####\r\n"); |
sayzyas | 0:2cb1be240f50 | 1849 | rts = false; |
sayzyas | 0:2cb1be240f50 | 1850 | } |
sayzyas | 0:2cb1be240f50 | 1851 | flg_mutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1852 | return rts; |
sayzyas | 0:2cb1be240f50 | 1853 | } |
sayzyas | 0:2cb1be240f50 | 1854 | |
sayzyas | 0:2cb1be240f50 | 1855 | |
sayzyas | 0:2cb1be240f50 | 1856 | extern "C" { |
sayzyas | 0:2cb1be240f50 | 1857 | #include "rt_TypeDef.h" |
sayzyas | 0:2cb1be240f50 | 1858 | #include "rt_System.h" |
sayzyas | 0:2cb1be240f50 | 1859 | } |
sayzyas | 0:2cb1be240f50 | 1860 | // ********************************************************************** |
sayzyas | 0:2cb1be240f50 | 1861 | // |
sayzyas | 0:2cb1be240f50 | 1862 | // Main Function of this program |
sayzyas | 0:2cb1be240f50 | 1863 | // |
sayzyas | 0:2cb1be240f50 | 1864 | // ********************************************************************** |
sayzyas | 0:2cb1be240f50 | 1865 | int main() |
sayzyas | 0:2cb1be240f50 | 1866 | { |
sayzyas | 0:2cb1be240f50 | 1867 | Mutex file_access_mutex; |
sayzyas | 0:2cb1be240f50 | 1868 | // int ret; |
sayzyas | 0:2cb1be240f50 | 1869 | int try_cnt; |
sayzyas | 0:2cb1be240f50 | 1870 | // bool flg_ethernet = false; |
sayzyas | 0:2cb1be240f50 | 1871 | char sss[20]; |
sayzyas | 0:2cb1be240f50 | 1872 | |
sayzyas | 0:2cb1be240f50 | 1873 | // Serial baudrate |
sayzyas | 0:2cb1be240f50 | 1874 | pc.baud(115200); |
sayzyas | 0:2cb1be240f50 | 1875 | |
sayzyas | 0:2cb1be240f50 | 1876 | sw_validpart.mode( PullUp ); // use internal pullup |
sayzyas | 0:2cb1be240f50 | 1877 | sw_JS_ShapeMode.mode( PullUp ); // use internal pullup |
sayzyas | 0:2cb1be240f50 | 1878 | |
sayzyas | 0:2cb1be240f50 | 1879 | led_ind_ptwc = ON; // LED indicator pan/tilt, crawler limit |
sayzyas | 0:2cb1be240f50 | 1880 | led_ind_tfm = ON; // LED indicator tfm motor current limit |
sayzyas | 0:2cb1be240f50 | 1881 | led_valid_part1 = ON; // LED transform, crawler valid |
sayzyas | 0:2cb1be240f50 | 1882 | led_valid_part2 = ON; // LED pan/tilt, winch valid |
sayzyas | 0:2cb1be240f50 | 1883 | |
sayzyas | 0:2cb1be240f50 | 1884 | lcd_dsp(0,0,"B2 PMORPH Demo ",16); |
sayzyas | 0:2cb1be240f50 | 1885 | lcd_dsp(0,1,"Revast Co.,Ltd. ",16); |
sayzyas | 0:2cb1be240f50 | 1886 | lcd_dsp(0,0,"Rev1.00 20170403",16); |
sayzyas | 0:2cb1be240f50 | 1887 | lcd_dsp(0,1,"System Booting..",16); |
sayzyas | 0:2cb1be240f50 | 1888 | |
sayzyas | 0:2cb1be240f50 | 1889 | DEBUG_PRINT_L0("\r\n"); |
sayzyas | 0:2cb1be240f50 | 1890 | DEBUG_PRINT_L0("Bd2> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\r\n"); |
sayzyas | 0:2cb1be240f50 | 1891 | DEBUG_PRINT_L0("Bd2> | Project: B1/B2 Debris Prover Demonstration machine\r\n"); |
sayzyas | 0:2cb1be240f50 | 1892 | DEBUG_PRINT_L0("Bd2> |-------------------------------------------------------------\r\n"); |
sayzyas | 0:2cb1be240f50 | 1893 | DEBUG_PRINT_L0("Handy(Bd2)>> | This is: Handy Control Program of Main Controller\r\n"); |
sayzyas | 0:2cb1be240f50 | 1894 | DEBUG_PRINT_L0("Handy(Bd2)>> | Target MCU: mbed LPC1768\r\n"); |
sayzyas | 0:2cb1be240f50 | 1895 | DEBUG_PRINT_L0("Handy(Bd2)>> | Letest update: %s\r\n", LatestUpDate); |
sayzyas | 0:2cb1be240f50 | 1896 | DEBUG_PRINT_L0("Handy(Bd2)>> | Program Revision: %s\r\n", ProgramRevision); |
sayzyas | 0:2cb1be240f50 | 1897 | DEBUG_PRINT_L0("Handy(Bd2)>> | Author: %s\r\n", Author); |
sayzyas | 0:2cb1be240f50 | 1898 | DEBUG_PRINT_L0("Handy(Bd2)>> | Copyright(C) 2017 %s Allright Reserved\r\n", Company); |
sayzyas | 0:2cb1be240f50 | 1899 | DEBUG_PRINT_L0("Handy(Bd2)>> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\r\n"); |
sayzyas | 0:2cb1be240f50 | 1900 | sprintf( sss, "%s", ProgramRevision ); |
sayzyas | 0:2cb1be240f50 | 1901 | |
sayzyas | 0:2cb1be240f50 | 1902 | // Thread::wait(50); |
sayzyas | 0:2cb1be240f50 | 1903 | |
sayzyas | 0:2cb1be240f50 | 1904 | //--------------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 1905 | // Read CrExp setting value from Local File System |
sayzyas | 0:2cb1be240f50 | 1906 | // setting file "SET.DAT". |
sayzyas | 0:2cb1be240f50 | 1907 | // When error occured, LED1 will be blinking shortly. |
sayzyas | 0:2cb1be240f50 | 1908 | //--------------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 1909 | DEBUG_PRINT_L0("Handy(Bd2)> =============================================================\r\n"); |
sayzyas | 0:2cb1be240f50 | 1910 | DEBUG_PRINT_L0("Handy(Bd2)> 2. Read setting value from LFS\r\n"); |
sayzyas | 0:2cb1be240f50 | 1911 | DEBUG_PRINT_L0("Handy(Bd2)> =============================================================\r\n"); |
sayzyas | 0:2cb1be240f50 | 1912 | |
sayzyas | 0:2cb1be240f50 | 1913 | #ifdef __CREATE_SETTING_FILE__ |
sayzyas | 0:2cb1be240f50 | 1914 | write_LFS(&setValue); // Create and set setting file. |
sayzyas | 0:2cb1be240f50 | 1915 | #endif // __CREATE_SETTING_FILE__ |
sayzyas | 0:2cb1be240f50 | 1916 | |
sayzyas | 0:2cb1be240f50 | 1917 | // -------------------------------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 1918 | // Read setting from local file system and set to internal structure |
sayzyas | 0:2cb1be240f50 | 1919 | // -------------------------------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 1920 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1921 | lcd_dsp(0,0,"LFS reading ... ",16); |
sayzyas | 0:2cb1be240f50 | 1922 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1923 | try_cnt = LFS_READ_COUNT; |
sayzyas | 0:2cb1be240f50 | 1924 | while( 1 ){ |
sayzyas | 0:2cb1be240f50 | 1925 | if( read_LFS(&setValue) == true ) break; |
sayzyas | 0:2cb1be240f50 | 1926 | else try_cnt -= 1; |
sayzyas | 0:2cb1be240f50 | 1927 | if( try_cnt == 0 ){ |
sayzyas | 0:2cb1be240f50 | 1928 | DEBUG_PRINT_L0("Handy(Bd2)> ***ERROR*** LFS read error\r\n"); |
sayzyas | 0:2cb1be240f50 | 1929 | while(1){ |
sayzyas | 0:2cb1be240f50 | 1930 | led1 = !led1; |
sayzyas | 0:2cb1be240f50 | 1931 | Thread::wait(30); |
sayzyas | 0:2cb1be240f50 | 1932 | } |
sayzyas | 0:2cb1be240f50 | 1933 | } |
sayzyas | 0:2cb1be240f50 | 1934 | } |
sayzyas | 0:2cb1be240f50 | 1935 | |
sayzyas | 0:2cb1be240f50 | 1936 | DEBUG_PRINT_L0("Handy(Bd2)> LFS read OK\r\n"); |
sayzyas | 0:2cb1be240f50 | 1937 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1938 | lcd_dsp(0,0,"LFS read OK ",16); |
sayzyas | 0:2cb1be240f50 | 1939 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1940 | |
sayzyas | 0:2cb1be240f50 | 1941 | led3 = ON; // Setting Data Read OK |
sayzyas | 0:2cb1be240f50 | 1942 | led2 = ON; // Check target OK |
sayzyas | 0:2cb1be240f50 | 1943 | |
sayzyas | 0:2cb1be240f50 | 1944 | /* Set basic function default setting */ |
sayzyas | 0:2cb1be240f50 | 1945 | baseOperation.sv_JS_OpeMode = 0; |
sayzyas | 0:2cb1be240f50 | 1946 | baseOperation.sv_JS_OpeMode = 0; |
sayzyas | 0:2cb1be240f50 | 1947 | baseOperation.sv_WinchValid = 0; |
sayzyas | 0:2cb1be240f50 | 1948 | |
sayzyas | 0:2cb1be240f50 | 1949 | DEBUG_PRINT_L0( "Handy(Bd2)> ----------------------------------\r\n"); |
sayzyas | 0:2cb1be240f50 | 1950 | DEBUG_PRINT_L0( "Handy(Bd2)> >>>> Initializing completed ! <<<<\r\n"); |
sayzyas | 0:2cb1be240f50 | 1951 | DEBUG_PRINT_L0( "Handy(Bd2)> ----------------------------------\r\n"); |
sayzyas | 0:2cb1be240f50 | 1952 | |
sayzyas | 0:2cb1be240f50 | 1953 | /* |
sayzyas | 0:2cb1be240f50 | 1954 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1955 | lcd_dsp(0,0,"Booted up ! ",16); |
sayzyas | 0:2cb1be240f50 | 1956 | Thread::wait(500); |
sayzyas | 0:2cb1be240f50 | 1957 | lcd_dsp(0,0,"LFS System OK ",16); |
sayzyas | 0:2cb1be240f50 | 1958 | lcd_dsp(0,1," ",16); |
sayzyas | 0:2cb1be240f50 | 1959 | Thread::wait(500); |
sayzyas | 0:2cb1be240f50 | 1960 | lcd_dsp(0,0," ",16); |
sayzyas | 0:2cb1be240f50 | 1961 | lcd_dsp(0,1,"B2Wch [3500 mm] ",16); |
sayzyas | 0:2cb1be240f50 | 1962 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1963 | */ |
sayzyas | 0:2cb1be240f50 | 1964 | |
sayzyas | 0:2cb1be240f50 | 1965 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 1966 | lcd_dsp(0,0,"Start sw task ",16); |
sayzyas | 0:2cb1be240f50 | 1967 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 1968 | DEBUG_PRINT_L0("Handy(Bd2)> =============================================================\r\n"); |
sayzyas | 0:2cb1be240f50 | 1969 | DEBUG_PRINT_L0("Handy(Bd2)>> 5. Start the task\r\n"); |
sayzyas | 0:2cb1be240f50 | 1970 | /* Max thread count is (may be ..) 2, How can I increase this , I don't know ?? */ |
sayzyas | 0:2cb1be240f50 | 1971 | |
sayzyas | 0:2cb1be240f50 | 1972 | // DEBUG_PRINT_L0("Handy(Bd2)> Start host gamepad task ... "); |
sayzyas | 0:2cb1be240f50 | 1973 | // Thread thread_gpd(gamepad_task, NULL, osPriorityNormal, 128*4); // GamePad Task isn't necessary. |
sayzyas | 0:2cb1be240f50 | 1974 | DEBUG_PRINT_L0("Handy(Bd2)> Start switch task ... "); |
sayzyas | 0:2cb1be240f50 | 1975 | Thread thread_swd(sw_task, NULL, osPriorityNormal, 256 * 4); |
sayzyas | 0:2cb1be240f50 | 1976 | |
sayzyas | 0:2cb1be240f50 | 1977 | DEBUG_PRINT_L0("\r\n"); |
sayzyas | 0:2cb1be240f50 | 1978 | DEBUG_PRINT_L0("Handy(Bd2)> =============================================================\r\n"); |
sayzyas | 0:2cb1be240f50 | 1979 | |
sayzyas | 0:2cb1be240f50 | 1980 | led4 = OFF; |
sayzyas | 0:2cb1be240f50 | 1981 | led3 = OFF; |
sayzyas | 0:2cb1be240f50 | 1982 | led2 = OFF; |
sayzyas | 0:2cb1be240f50 | 1983 | led1 = ON; // Initializing is OK then Power Indicator LED ON |
sayzyas | 0:2cb1be240f50 | 1984 | |
sayzyas | 0:2cb1be240f50 | 1985 | wait(10.0); |
sayzyas | 0:2cb1be240f50 | 1986 | |
sayzyas | 0:2cb1be240f50 | 1987 | if( flg_system_ok == true ) |
sayzyas | 0:2cb1be240f50 | 1988 | { |
sayzyas | 0:2cb1be240f50 | 1989 | led_ind_ptwc = OFF; // LED indicator pan/tilt, crawler limit |
sayzyas | 0:2cb1be240f50 | 1990 | led_ind_tfm = OFF; // LED indicator tfm motor current limit |
sayzyas | 0:2cb1be240f50 | 1991 | led_valid_part1 = OFF; // LED transform, crawler valid |
sayzyas | 0:2cb1be240f50 | 1992 | led_valid_part2 = OFF; // LED pan/tilt, winch valid |
sayzyas | 0:2cb1be240f50 | 1993 | } |
sayzyas | 0:2cb1be240f50 | 1994 | |
sayzyas | 0:2cb1be240f50 | 1995 | while( 1 ) { |
sayzyas | 0:2cb1be240f50 | 1996 | Thread::wait(3); |
sayzyas | 0:2cb1be240f50 | 1997 | // ----------------------------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 1998 | // Communicate with client PC program. |
sayzyas | 0:2cb1be240f50 | 1999 | // TCP connection: |
sayzyas | 0:2cb1be240f50 | 2000 | // ----------------------------------------------------------------- |
sayzyas | 0:2cb1be240f50 | 2001 | if( flg_system_ok == true ) |
sayzyas | 0:2cb1be240f50 | 2002 | { |
sayzyas | 0:2cb1be240f50 | 2003 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 2004 | lcd_dsp(13,0,"[^] ",4); |
sayzyas | 0:2cb1be240f50 | 2005 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 2006 | Thread::wait(300); |
sayzyas | 0:2cb1be240f50 | 2007 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 2008 | lcd_dsp(13,0,"[>] ",4); |
sayzyas | 0:2cb1be240f50 | 2009 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 2010 | Thread::wait(300); |
sayzyas | 0:2cb1be240f50 | 2011 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 2012 | lcd_dsp(13,0,"[v] ",4); |
sayzyas | 0:2cb1be240f50 | 2013 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 2014 | Thread::wait(300); |
sayzyas | 0:2cb1be240f50 | 2015 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 2016 | lcd_dsp(13,0,"[<] ",4); |
sayzyas | 0:2cb1be240f50 | 2017 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 2018 | Thread::wait(300); |
sayzyas | 0:2cb1be240f50 | 2019 | } |
sayzyas | 0:2cb1be240f50 | 2020 | else |
sayzyas | 0:2cb1be240f50 | 2021 | { |
sayzyas | 0:2cb1be240f50 | 2022 | lcdMutex.lock(); |
sayzyas | 0:2cb1be240f50 | 2023 | // 0123456789012345 |
sayzyas | 0:2cb1be240f50 | 2024 | lcd_dsp(0,0,"HandyCtrl Error!",16); |
sayzyas | 0:2cb1be240f50 | 2025 | lcd_dsp(0,1,"* Check system! * ",16); |
sayzyas | 0:2cb1be240f50 | 2026 | lcdMutex.unlock(); |
sayzyas | 0:2cb1be240f50 | 2027 | Thread::wait(750); |
sayzyas | 0:2cb1be240f50 | 2028 | } |
sayzyas | 0:2cb1be240f50 | 2029 | } |
sayzyas | 0:2cb1be240f50 | 2030 | |
sayzyas | 0:2cb1be240f50 | 2031 | tsocket.close(); |
sayzyas | 0:2cb1be240f50 | 2032 | } |