Webserver only w/o any other functions, single thread. Running on STM32F013+W5500
Dependencies: NTPClient W5500Interface Watchdog device_configuration eeprom_flash mbed-rpc-nucleo mbed-rtos mbed
Fork of F103-Serial-to-Ethernet by
protocol.txt
- Committer:
- olympux
- Date:
- 2014-10-21
- Revision:
- 18:ca499a2e7da6
- Child:
- 23:47ee805435b1
File content as of revision 18:ca499a2e7da6:
CONFIGURATION SECTION (UDP) 1. DISCOVERY Command + UDP broadcast: 192.168.0.255 to port 11000 + Send: NNIODS + Receive: NNIO IP-address 1a. Query Command: IP, subnet, gateway, mac + + Send: NNIOIP, NNIOSN, NNIOGW, NNIOMC 2. TCP SERVER PORT Command + Send: NNIOTP + Receive: 10000 3. UDP SERVER PORT Command + Send: NNIOUP + Receive: 11000 4. Set time using NTP Command + Send NNIOTM + Receive: DIS: if NTP is disabled ERR: if cannot update time Successful: Fri Sep 26 20:28:01 2014 {0A} 5. Set new network configuration + Send: 19 bytes in total, NNIO + 15-byte NNIO 4-byte IP address 4-byte subnet 4-byte gateway 3-byte MAC 4E 4E 49 4F C0 A8 00 78 FF FF FF 00 C0 A8 00 01 00 00 01 6. Set TCP server info (only when the device is as a TCP client) + Send: 12 bytes in total, NNIO + 8 bytes NNIO 1-byte auto flag 1-byte time period (s) 4-byte IP 2-byte port (LSB MSB) 4E 4E 49 4F 'Y' or others 05 (5s) C0 A8 00 09 E0 2E (0x2EE0 = 12000) NOTE: 1. Both TCP client and server are working. Can be enabled/disabled using u16enable_tcp_client/server flags in eeprom (not in use now). 2. UDP server is always working. INTERFACING SECTION (TCP) 4. Receiving Protocol: 58-bytes in total Ex in hex ID: 4E 4E 49 4F OP: 4F 4F 4F 4F 51 IP: C0 A8 00 78 DO: 48 48 48 48 48 48 48 48 AO: 80 00 80 00 (no DAC) UART: 32-byte CR: 0D + Field ID (4-bytes) = NNIO + Field OP (5-bytes): output control enable flag Byte 1: Digital output Byte 2: Analog output 0 Byte 3: Analog output 1 Byte 4: UART output Byte 5: Command (Q: query status) 'O': enable controlling output Others: disable controlling output If Command is 'Q', device will update its outputs if needed and send its status including new outputs + Field IP (4-bytes): device IP address + Field DO[n] (8-bytes): digital output values 'H': output set to high 'L': output set to low + Field AO_0 (2-bytes): 16-bit analog output value, channel 0 no DAC + Field AO_1 (2-bytes): 16-bit analog output value, channel 1 no DAC + UART output (32-bytes): max 32 bytes, stop string by NULL + End char: CR 5. Sending Protocol: 39-bytes in total + Field ID (4-bytes) = NNIO + Field MAC (6-bytes) + Field IP (4-bytes) + Field DI[n]: 8-bit digital input values 'H' if input is HIGH 'L' if input is LOW + Field DO[n]: 8-bit digital output values 'H' if output is HIGH 'L' if output is LOW + Field AI_0 (2-bytes): analog 16-bit input value, normalised, channel 0 1st byte = LSB, 2nd byte = MSB + Field AI_1 (2-bytes): analog 16-bit input value, normalised, channel 1 1st byte = LSB, 2nd byte = MSB + Field AO_0 (2-bytes): 16-bit analog output value, channel 0 no DAC, fixed + Field AO_1 (2-bytes): 16-bit analog output value, channel 1 no DAC, fixed + End char: CR 6 Commands: + QUERY STATUS ('Q')