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 Chau Vo

protocol.txt

Committer:
olympux
Date:
2014-11-27
Revision:
23:47ee805435b1
Parent:
18:ca499a2e7da6
Child:
25:48dd18cc147c

File content as of revision 23:47ee805435b1:

CONFIGURATION SECTION (UDP)
A configuration command always starts with "NN"
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')