bosko lekovic
/
ETHtoCOM_10
nova verzija tcp+udp->serial com
main.cpp@26:c14d034d7459, 2020-07-10 (annotated)
- Committer:
- bosko001
- Date:
- Fri Jul 10 11:33:05 2020 +0200
- Revision:
- 26:c14d034d7459
- Parent:
- 24:ec9446d86668
ispituje se na terenu
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bosko001 | 0:fe8cd064ea08 | 1 | #include "mbed.h" |
bosko001 | 2:45b351b4fc2a | 2 | #include "clubbing.h" |
bosko001 | 2:45b351b4fc2a | 3 | #include "EthernetSetup.h" |
bosko001 | 21:2232f5a34eb4 | 4 | #include "UdpClients.h" |
Bosko Lekovic |
18:5ee53205451a | 5 | #include "TcpClients.h" |
bosko001 | 21:2232f5a34eb4 | 6 | #include "SerialCom.h" |
bosko001 | 2:45b351b4fc2a | 7 | #include "TcpServerToFlash.h" |
bosko001 | 26:c14d034d7459 | 8 | #include "TcpServer.h" |
bosko001 | 21:2232f5a34eb4 | 9 | //#include "dxml.h" |
bosko001 | 2:45b351b4fc2a | 10 | #include "doHTML.h" |
bosko001 | 3:1196befeace0 | 11 | #include "dataFlash.h" |
bosko001 | 0:fe8cd064ea08 | 12 | |
bosko001 | 22:11279d24a105 | 13 | extern "C" void mbed_reset(); |
bosko001 | 5:c9a908749d4c | 14 | |
bosko001 | 22:11279d24a105 | 15 | void startUp( void) |
bosko001 | 22:11279d24a105 | 16 | { |
bosko001 | 22:11279d24a105 | 17 | // mbed_reset(); |
bosko001 | 22:11279d24a105 | 18 | NVIC_SystemReset(); |
bosko001 | 22:11279d24a105 | 19 | } |
bosko001 | 5:c9a908749d4c | 20 | |
bosko001 | 5:c9a908749d4c | 21 | |
bosko001 | 2:45b351b4fc2a | 22 | volatile PFV pfv = NULL; |
bosko001 | 1:e1bde4e82763 | 23 | |
bosko001 | 1:e1bde4e82763 | 24 | |
bosko001 | 2:45b351b4fc2a | 25 | DigitalOut GLed(LED2,1); |
bosko001 | 21:2232f5a34eb4 | 26 | DigitalOut BLed(LED3,1); |
bosko001 | 24:ec9446d86668 | 27 | DigitalOut RLed(LED1,1); |
bosko001 | 21:2232f5a34eb4 | 28 | DigitalOut *p_led; |
bosko001 | 1:e1bde4e82763 | 29 | |
bosko001 | 2:45b351b4fc2a | 30 | void pfv_fun( void ) |
bosko001 | 1:e1bde4e82763 | 31 | { |
bosko001 | 2:45b351b4fc2a | 32 | while(true) |
bosko001 | 2:45b351b4fc2a | 33 | { |
bosko001 | 2:45b351b4fc2a | 34 | if(pfv) {pfv(); pfv = NULL;} |
bosko001 | 2:45b351b4fc2a | 35 | cleanTcpServerToFlashThread( ); |
bosko001 | 2:45b351b4fc2a | 36 | |
bosko001 | 2:45b351b4fc2a | 37 | } |
bosko001 | 1:e1bde4e82763 | 38 | } |
Bosko Lekovic |
18:5ee53205451a | 39 | Thread pfv_thread(pfv_fun, osPriorityNormal, 1000); |
bosko001 | 1:e1bde4e82763 | 40 | |
bosko001 | 7:7ea932eb31f6 | 41 | |
bosko001 | 7:7ea932eb31f6 | 42 | void input_fun( void ) |
bosko001 | 7:7ea932eb31f6 | 43 | { |
bosko001 | 26:c14d034d7459 | 44 | |
bosko001 | 7:7ea932eb31f6 | 45 | while(true) |
bosko001 | 7:7ea932eb31f6 | 46 | { |
bosko001 | 7:7ea932eb31f6 | 47 | unsigned char uc; |
Bosko Lekovic |
18:5ee53205451a | 48 | int fltip, kanal, fleg; |
bosko001 | 26:c14d034d7459 | 49 | wait(0.1); |
bosko001 | 7:7ea932eb31f6 | 50 | uc = (unsigned char)getchar( ); |
bosko001 | 7:7ea932eb31f6 | 51 | printf( "\n\runesen karakter %c\n\r", uc); |
Bosko Lekovic |
18:5ee53205451a | 52 | |
Bosko Lekovic |
18:5ee53205451a | 53 | switch( uc ) |
bosko001 | 7:7ea932eb31f6 | 54 | { |
bosko001 | 26:c14d034d7459 | 55 | case 'F': printf("while\n\r"); while(1); break; |
Bosko Lekovic |
18:5ee53205451a | 56 | case 'h': |
Bosko Lekovic |
18:5ee53205451a | 57 | { |
bosko001 | 7:7ea932eb31f6 | 58 | extern C_HTMLparse *gpc_html; |
bosko001 | 7:7ea932eb31f6 | 59 | auto c = gpc_html->getHTML_free( ); |
bosko001 | 7:7ea932eb31f6 | 60 | printf("\n\r%s\n\r", c); |
bosko001 | 7:7ea932eb31f6 | 61 | free(c); |
Bosko Lekovic |
18:5ee53205451a | 62 | } |
Bosko Lekovic |
18:5ee53205451a | 63 | break; |
Bosko Lekovic |
18:5ee53205451a | 64 | case 'c': |
Bosko Lekovic |
18:5ee53205451a | 65 | fltip = 1; |
Bosko Lekovic |
18:5ee53205451a | 66 | break; |
Bosko Lekovic |
18:5ee53205451a | 67 | case 'f': |
Bosko Lekovic |
18:5ee53205451a | 68 | fltip = 2; |
Bosko Lekovic |
18:5ee53205451a | 69 | break; |
Bosko Lekovic |
18:5ee53205451a | 70 | case '0': case '1': case '2': case '3': |
Bosko Lekovic |
18:5ee53205451a | 71 | if(fltip == 1) kanal = uc - '0'; |
Bosko Lekovic |
18:5ee53205451a | 72 | else fleg = uc - '0'; |
Bosko Lekovic |
18:5ee53205451a | 73 | break; |
Bosko Lekovic |
18:5ee53205451a | 74 | case 'd': |
Bosko Lekovic |
18:5ee53205451a | 75 | { |
Bosko Lekovic |
18:5ee53205451a | 76 | // extern void tcpRxThreadCancel( int i, int flag); |
Bosko Lekovic |
18:5ee53205451a | 77 | // tcpRxThreadCancel( kanal, fleg ); |
Bosko Lekovic |
18:5ee53205451a | 78 | printf(" komanda za tred[%d] fleg=%d\n\r", kanal, fleg); |
Bosko Lekovic |
18:5ee53205451a | 79 | } |
Bosko Lekovic |
18:5ee53205451a | 80 | break; |
bosko001 | 19:7bdb1a10043f | 81 | case 'P': case 'p': |
bosko001 | 22:11279d24a105 | 82 | // restart_TcpClients( ); |
bosko001 | 24:ec9446d86668 | 83 | //startUp(); |
bosko001 | 24:ec9446d86668 | 84 | showFlashData( ); |
bosko001 | 19:7bdb1a10043f | 85 | break; |
bosko001 | 19:7bdb1a10043f | 86 | case 'S': case 's': |
Bosko Lekovic |
18:5ee53205451a | 87 | { |
bosko001 | 19:7bdb1a10043f | 88 | //get_rxStatus( int i ) |
bosko001 | 19:7bdb1a10043f | 89 | puts("TCP Clients Threads satatus:\n\r"); |
bosko001 | 19:7bdb1a10043f | 90 | printf("\n\r TCP statusi T[0]=%d T[1]=%d T[2]=%d T[3]=%d \n\r", get_rxStatus(0), get_rxStatus(1), get_rxStatus(2), get_rxStatus(3)); |
bosko001 | 19:7bdb1a10043f | 91 | printf(" TCP validy T[0]=%d T[1]=%d T[2]=%d T[3]=%d \n\r", get_rxValidy(0), get_rxValidy(1), get_rxValidy(2), get_rxValidy(3)); |
bosko001 | 20:d8277082f4e3 | 92 | printf("status ethernet mreze %d\n\r", getEthernetStatus( )); |
Bosko Lekovic |
18:5ee53205451a | 93 | } |
Bosko Lekovic |
18:5ee53205451a | 94 | break; |
bosko001 | 19:7bdb1a10043f | 95 | case 'T': case 't': |
bosko001 | 19:7bdb1a10043f | 96 | { |
bosko001 | 19:7bdb1a10043f | 97 | puts("TCP Clients Thread controll, thread number input:"); |
bosko001 | 19:7bdb1a10043f | 98 | char no = getchar()-'0'; |
bosko001 | 19:7bdb1a10043f | 99 | puts("\n\rTCP Clients Thread controll, thread flag input:"); |
bosko001 | 19:7bdb1a10043f | 100 | char fl = getchar()-'0'; |
bosko001 | 23:766819b4c453 | 101 | // void restart_TcpClient( int noClient, int typeRestart ); |
bosko001 | 23:766819b4c453 | 102 | // restart_TcpClientConnection( no, fl & 7 ); |
bosko001 | 19:7bdb1a10043f | 103 | printf("\n\rthread = %d, flag =%d\n\r", no, fl); |
bosko001 | 19:7bdb1a10043f | 104 | } |
Bosko Lekovic |
18:5ee53205451a | 105 | break; |
Bosko Lekovic |
18:5ee53205451a | 106 | case 'R': |
Bosko Lekovic |
18:5ee53205451a | 107 | printf("systemInit()\n\r"); |
Bosko Lekovic |
18:5ee53205451a | 108 | SystemInit(); |
Bosko Lekovic |
18:5ee53205451a | 109 | //goto __main; |
Bosko Lekovic |
18:5ee53205451a | 110 | break; |
bosko001 | 22:11279d24a105 | 111 | |
bosko001 | 22:11279d24a105 | 112 | case 'q': case 'Q': |
bosko001 | 22:11279d24a105 | 113 | { |
bosko001 | 22:11279d24a105 | 114 | extern void print_serial( void ); |
bosko001 | 22:11279d24a105 | 115 | print_serial( ); |
bosko001 | 22:11279d24a105 | 116 | } |
bosko001 | 22:11279d24a105 | 117 | break; |
bosko001 | 7:7ea932eb31f6 | 118 | } |
bosko001 | 7:7ea932eb31f6 | 119 | } |
bosko001 | 7:7ea932eb31f6 | 120 | } |
Bosko Lekovic |
18:5ee53205451a | 121 | Thread input_thread(input_fun, osPriorityNormal, 1000); |
bosko001 | 7:7ea932eb31f6 | 122 | |
bosko001 | 7:7ea932eb31f6 | 123 | |
bosko001 | 5:c9a908749d4c | 124 | C_HTMLparse *gpc_html; |
bosko001 | 7:7ea932eb31f6 | 125 | |
bosko001 | 7:7ea932eb31f6 | 126 | |
bosko001 | 26:c14d034d7459 | 127 | #define WD_KICK watchdog.kick() |
Bosko Lekovic |
18:5ee53205451a | 128 | |
bosko001 | 0:fe8cd064ea08 | 129 | |
bosko001 | 0:fe8cd064ea08 | 130 | int main(void) |
bosko001 | 0:fe8cd064ea08 | 131 | { |
bosko001 | 1:e1bde4e82763 | 132 | |
Bosko Lekovic |
18:5ee53205451a | 133 | printf("\n\r\n\n---------- POCETAK ------------- \n\n\r"); |
bosko001 | 26:c14d034d7459 | 134 | |
bosko001 | 26:c14d034d7459 | 135 | Watchdog &watchdog = Watchdog::get_instance(); |
bosko001 | 26:c14d034d7459 | 136 | watchdog.start(10000); |
bosko001 | 26:c14d034d7459 | 137 | |
bosko001 | 22:11279d24a105 | 138 | doinit_FlashData( ); |
bosko001 | 3:1196befeace0 | 139 | |
bosko001 | 5:c9a908749d4c | 140 | gpc_html = new C_HTMLparse; |
Bosko Lekovic |
18:5ee53205451a | 141 | C_HTMLparse *p_temp_html = new C_HTMLparse; |
bosko001 | 3:1196befeace0 | 142 | |
Bosko Lekovic |
18:5ee53205451a | 143 | // PROVERA KONZISTENCIJE FLASH PODATAKA |
Bosko Lekovic |
18:5ee53205451a | 144 | putFLASHintoHTML( p_temp_html ); |
bosko001 | 12:cbfc10c15437 | 145 | |
Bosko Lekovic |
18:5ee53205451a | 146 | if( test_FlashDataProbity( )) |
Bosko Lekovic |
18:5ee53205451a | 147 | { |
Bosko Lekovic |
18:5ee53205451a | 148 | printf( "MAIN: dobri Flash podaci\n\r"); |
Bosko Lekovic |
18:5ee53205451a | 149 | putFLASHintoHTML( gpc_html ); |
Bosko Lekovic |
18:5ee53205451a | 150 | } |
Bosko Lekovic |
18:5ee53205451a | 151 | else |
Bosko Lekovic |
18:5ee53205451a | 152 | { |
bosko001 | 22:11279d24a105 | 153 | printf("MAIN: losi FLASH podaci - koristim static\n\r"); |
Bosko Lekovic |
18:5ee53205451a | 154 | putHTMLintoFLASH( gpc_html ); |
Bosko Lekovic |
18:5ee53205451a | 155 | putFLASHintoHTML( gpc_html ); |
Bosko Lekovic |
18:5ee53205451a | 156 | } |
Bosko Lekovic |
18:5ee53205451a | 157 | delete p_temp_html; |
Bosko Lekovic |
18:5ee53205451a | 158 | |
Bosko Lekovic |
18:5ee53205451a | 159 | // showFlashData( ); |
bosko001 | 3:1196befeace0 | 160 | |
bosko001 | 1:e1bde4e82763 | 161 | |
bosko001 | 21:2232f5a34eb4 | 162 | //extern EthernetInterface *gp_eth; |
bosko001 | 12:cbfc10c15437 | 163 | |
bosko001 | 21:2232f5a34eb4 | 164 | |
bosko001 | 26:c14d034d7459 | 165 | WD_KICK; |
bosko001 | 12:cbfc10c15437 | 166 | |
bosko001 | 21:2232f5a34eb4 | 167 | if( ethernet_setup( ) ) |
bosko001 | 21:2232f5a34eb4 | 168 | { |
bosko001 | 21:2232f5a34eb4 | 169 | start_TcpClients( ); |
bosko001 | 21:2232f5a34eb4 | 170 | start_UdpClients( ); |
bosko001 | 21:2232f5a34eb4 | 171 | inic_TcpServerToFlash( ); |
bosko001 | 21:2232f5a34eb4 | 172 | p_led = &GLed; |
bosko001 | 26:c14d034d7459 | 173 | |
bosko001 | 26:c14d034d7459 | 174 | |
bosko001 | 26:c14d034d7459 | 175 | extern void start_TcpServer( void ); |
bosko001 | 26:c14d034d7459 | 176 | start_TcpServer( ); |
bosko001 | 26:c14d034d7459 | 177 | |
bosko001 | 21:2232f5a34eb4 | 178 | } |
bosko001 | 21:2232f5a34eb4 | 179 | else p_led = &BLed; |
bosko001 | 16:c4e0e8b4d8fc | 180 | |
bosko001 | 26:c14d034d7459 | 181 | |
bosko001 | 26:c14d034d7459 | 182 | WD_KICK; |
bosko001 | 26:c14d034d7459 | 183 | |
bosko001 | 26:c14d034d7459 | 184 | |
bosko001 | 21:2232f5a34eb4 | 185 | start_SerialCom( ); |
bosko001 | 12:cbfc10c15437 | 186 | |
bosko001 | 4:7abcf4543282 | 187 | extern void test_HTML(void); |
bosko001 | 12:cbfc10c15437 | 188 | // test_HTML( ); |
bosko001 | 4:7abcf4543282 | 189 | |
bosko001 | 2:45b351b4fc2a | 190 | |
bosko001 | 2:45b351b4fc2a | 191 | int i=0; |
bosko001 | 21:2232f5a34eb4 | 192 | |
bosko001 | 21:2232f5a34eb4 | 193 | int s = getEthernetStatus(); |
bosko001 | 21:2232f5a34eb4 | 194 | if( s == 1 ) p_led = &GLed; |
bosko001 | 21:2232f5a34eb4 | 195 | else p_led = &BLed; |
bosko001 | 21:2232f5a34eb4 | 196 | int k = s; |
bosko001 | 21:2232f5a34eb4 | 197 | |
bosko001 | 2:45b351b4fc2a | 198 | while(true) |
bosko001 | 2:45b351b4fc2a | 199 | { |
bosko001 | 21:2232f5a34eb4 | 200 | if(i++ >10 ) |
bosko001 | 21:2232f5a34eb4 | 201 | { |
bosko001 | 21:2232f5a34eb4 | 202 | i=0; |
bosko001 | 21:2232f5a34eb4 | 203 | s = getEthernetStatus(); |
bosko001 | 21:2232f5a34eb4 | 204 | if( s != k) |
bosko001 | 21:2232f5a34eb4 | 205 | { |
bosko001 | 21:2232f5a34eb4 | 206 | *p_led = 1; |
bosko001 | 22:11279d24a105 | 207 | if( s == 1 ) startUp(); //p_led = &GLed; |
bosko001 | 21:2232f5a34eb4 | 208 | else if( s == 3) p_led = &BLed; |
bosko001 | 21:2232f5a34eb4 | 209 | k = s; |
bosko001 | 21:2232f5a34eb4 | 210 | } |
bosko001 | 21:2232f5a34eb4 | 211 | else *p_led = !*p_led; |
bosko001 | 21:2232f5a34eb4 | 212 | |
bosko001 | 21:2232f5a34eb4 | 213 | } |
bosko001 | 26:c14d034d7459 | 214 | |
bosko001 | 26:c14d034d7459 | 215 | WD_KICK; |
bosko001 | 26:c14d034d7459 | 216 | |
bosko001 | 2:45b351b4fc2a | 217 | wait(0.01); |
bosko001 | 0:fe8cd064ea08 | 218 | } |
bosko001 | 3:1196befeace0 | 219 | |
Bosko Lekovic |
18:5ee53205451a | 220 | // deinit_FlashData( ); |
bosko001 | 3:1196befeace0 | 221 | |
bosko001 | 3:1196befeace0 | 222 | |
bosko001 | 0:fe8cd064ea08 | 223 | } |
bosko001 | 0:fe8cd064ea08 | 224 | |
bosko001 | 1:e1bde4e82763 | 225 | |
bosko001 | 2:45b351b4fc2a | 226 | |
bosko001 | 2:45b351b4fc2a | 227 | |
bosko001 | 2:45b351b4fc2a | 228 | |
bosko001 | 1:e1bde4e82763 | 229 | |
bosko001 | 1:e1bde4e82763 | 230 | |
bosko001 | 1:e1bde4e82763 | 231 | |
bosko001 | 0:fe8cd064ea08 | 232 | // |
bosko001 | 0:fe8cd064ea08 | 233 | //enum nsapi_error { |
bosko001 | 0:fe8cd064ea08 | 234 | // NSAPI_ERROR_OK = 0, /*!< no error */ |
bosko001 | 0:fe8cd064ea08 | 235 | // NSAPI_ERROR_WOULD_BLOCK = -3001, /*!< no data is not available but call is non-blocking */ |
bosko001 | 0:fe8cd064ea08 | 236 | // NSAPI_ERROR_UNSUPPORTED = -3002, /*!< unsupported functionality */ |
bosko001 | 0:fe8cd064ea08 | 237 | // NSAPI_ERROR_PARAMETER = -3003, /*!< invalid configuration */ |
bosko001 | 0:fe8cd064ea08 | 238 | // NSAPI_ERROR_NO_CONNECTION = -3004, /*!< not connected to a network */ |
bosko001 | 0:fe8cd064ea08 | 239 | // NSAPI_ERROR_NO_SOCKET = -3005, /*!< socket not available for use */ |
bosko001 | 0:fe8cd064ea08 | 240 | // NSAPI_ERROR_NO_ADDRESS = -3006, /*!< IP address is not known */ |
bosko001 | 0:fe8cd064ea08 | 241 | // NSAPI_ERROR_NO_MEMORY = -3007, /*!< memory resource not available */ |
bosko001 | 0:fe8cd064ea08 | 242 | // NSAPI_ERROR_NO_SSID = -3008, /*!< ssid not found */ |
bosko001 | 0:fe8cd064ea08 | 243 | // NSAPI_ERROR_DNS_FAILURE = -3009, /*!< DNS failed to complete successfully */ |
bosko001 | 0:fe8cd064ea08 | 244 | // NSAPI_ERROR_DHCP_FAILURE = -3010, /*!< DHCP failed to complete successfully */ |
bosko001 | 0:fe8cd064ea08 | 245 | // NSAPI_ERROR_AUTH_FAILURE = -3011, /*!< connection to access point failed */ |
bosko001 | 0:fe8cd064ea08 | 246 | // NSAPI_ERROR_DEVICE_ERROR = -3012, /*!< failure interfacing with the network processor */ |
bosko001 | 0:fe8cd064ea08 | 247 | // NSAPI_ERROR_IN_PROGRESS = -3013, /*!< operation (eg connect) in progress */ |
bosko001 | 0:fe8cd064ea08 | 248 | // NSAPI_ERROR_ALREADY = -3014, /*!< operation (eg connect) already in progress */ |
bosko001 | 0:fe8cd064ea08 | 249 | // NSAPI_ERROR_IS_CONNECTED = -3015, /*!< socket is already connected */ |
bosko001 | 0:fe8cd064ea08 | 250 | // NSAPI_ERROR_CONNECTION_LOST = -3016, /*!< connection lost */ |
bosko001 | 0:fe8cd064ea08 | 251 | // NSAPI_ERROR_CONNECTION_TIMEOUT = -3017, /*!< connection timed out */ |
bosko001 | 0:fe8cd064ea08 | 252 | //}; |