e12
 
Loading...
Searching...
No Matches
e12_protocol.h File Reference
#include <stdint.h>

Go to the source code of this file.

Classes

class  e12
 This class represents the base class for the e12 protocol. More...
 

Macros

#define E12_MAX_PKT_SIZE   128
 e12 on wire max packet size
 
#define E12_MAX_DATA_PAYLOAD   (E12_MAX_PKT_SIZE - sizeof(e12_onwire_head_t) - 8)
 e12 max payload size in bytes in a e12 packet
 
#define E12_MAX_LOG_BUFFERS   1
 
#define MAX_S_LOG_DATA   16
 
#define MAX_SSID_LEN   32
 
#define MAX_PWD_LEN   32
 
#define MAX_LOG_SIZE   (sizeof(e12_log_evt_t))
 
#define E12_MAGIC_MARKER_LEN   2
 
#define E12_MAGIC_MARKER_1   (0xEC)
 
#define E12_MAGIC_MARKER_2   (0xEC ^ 0xCE)
 
#define E12_MAX_CMD_DATA_PAYLOAD   (E12_MAX_DATA_PAYLOAD - sizeof(e12_header_t))
 
#define E12_MAX_FIRMWARE_VERSION_LEN   32
 

Enumerations

enum class  e12_cmd_t : uint8_t {
  NONE = 0 , CMD_PING , CMD_AUTH , CMD_INFO ,
  CMD_PROFILE , CMD_PIN_CTL , CMD_CONFIG , CMD_STATE ,
  CMD_STATUS , CMD_LOG , CMD_TIME , CMD_SCHEDULE_WAKEUP ,
  CMD_NODE_SLEEP , CMD_NODE_AWAKE , CMD_OTA , CMD_VMCU_OTA ,
  CMD_SET_NODE_PROPERTIES , CMD_DEBUG_BLINK
}
 e12 commands More...
 
enum class  e12_release_t : uint8_t { STABLE = 0 , CANARY , DEV }
 
enum class  ctl_op_t : uint8_t { READ = 0 , WRITE }
 
enum class  e12_err_t : int8_t { ERR_NONE = 0 , ERR_RETRY_LATER = -1 }
 Used to indicate the error status of an operation. More...
 
enum class  e12_evt_status_t : uint8_t { STATUS_DONE = 0 , STATUS_NEW , STATUS_IN_PROCESSING , STATUS_IN_WAITING }
 Used to indicate the status of an event. This information is typically carried in a log event. More...
 
enum class  e12_node_op_status_t : uint8_t {
  STATUS_NONE = 0 , STATUS_ACTIVE , STATUS_SLEEP , STATUS_OTA ,
  STATUS_VMCU_OTA
}
 Used to indicate the operation status of an e12 node e.g active, sleep, ota etc. More...
 
enum class  mcu_arch_t : uint8_t { ARCH_NONE = 0 , ARCH_ATMEGA328 , ARCH_SAMD21 }
 Supported MCU architecture. More...
 
enum class  mcu_flashing_protocol_t : uint8_t { PROTOCOL_NONE = 0 , PROTOCOL_STK500 , PROTOCOL_BOSSA }
 Supported MCU flashing protocols architecture. More...
 

Functions

struct __attribute__ ((packed, aligned(4))) e12_log_evt
 

Variables

 e12_log_evt_t
 
 e12_wakeup_data_t
 
 e12_debug_blink_t
 
 e12_node_properties_t
 
 e12_auth_data_t
 
 e12_node_state_t
 
 e12_header_t
 
 e12_onwire_head_t
 
 e12_ctl_msg_t
 
 e12_packet_t
 
 e12_onwire_t
 
 e12_data_t
 
 e12_device_t
 
 ctl_log_t
 

Macro Definition Documentation

◆ E12_MAGIC_MARKER_1

#define E12_MAGIC_MARKER_1   (0xEC)

◆ E12_MAGIC_MARKER_2

#define E12_MAGIC_MARKER_2   (0xEC ^ 0xCE)

◆ E12_MAGIC_MARKER_LEN

#define E12_MAGIC_MARKER_LEN   2

◆ E12_MAX_CMD_DATA_PAYLOAD

#define E12_MAX_CMD_DATA_PAYLOAD   (E12_MAX_DATA_PAYLOAD - sizeof(e12_header_t))

◆ E12_MAX_DATA_PAYLOAD

#define E12_MAX_DATA_PAYLOAD   (E12_MAX_PKT_SIZE - sizeof(e12_onwire_head_t) - 8)

e12 max payload size in bytes in a e12 packet

◆ E12_MAX_FIRMWARE_VERSION_LEN

#define E12_MAX_FIRMWARE_VERSION_LEN   32

◆ E12_MAX_LOG_BUFFERS

#define E12_MAX_LOG_BUFFERS   1

◆ E12_MAX_PKT_SIZE

#define E12_MAX_PKT_SIZE   128

e12 on wire max packet size

◆ MAX_LOG_SIZE

#define MAX_LOG_SIZE   (sizeof(e12_log_evt_t))

◆ MAX_PWD_LEN

#define MAX_PWD_LEN   32

◆ MAX_S_LOG_DATA

#define MAX_S_LOG_DATA   16

◆ MAX_SSID_LEN

#define MAX_SSID_LEN   32

Enumeration Type Documentation

◆ ctl_op_t

enum class ctl_op_t : uint8_t
strong
Enumerator
READ 

READ operation.

WRITE 

WRITE operation.

◆ e12_cmd_t

enum class e12_cmd_t : uint8_t
strong

e12 commands

Enumerator
NONE 
CMD_PING 

typical ping cmd. responded with a "pong" string

CMD_AUTH 

used to pass authentication credential for e.g WiFi or LTE etc

CMD_INFO 

used to send current VMCU firmware version

CMD_PROFILE 

used to send device profile info e.g pins (digital/analog), in/out etc

CMD_PIN_CTL 

used issue a pin READ/WRITE. the concept of PIN is virtual and can be mapped to arbitrary cmd instructions

CMD_CONFIG 

used to request vendor specific configuration

CMD_STATE 

used to either send or request vendor state from e12 node

CMD_STATUS 

asked to query the e12 node for various status information

CMD_LOG 

used to log a vendor event to e12 node for store and forward

CMD_TIME 

request current time in ms from e12 node

CMD_SCHEDULE_WAKEUP 

request e12 node to wake vendor mcu after certain ms

CMD_NODE_SLEEP 

typically sent by e12 node intending to go to sleep

CMD_NODE_AWAKE 

typically sent by e12 node when it powers on or wake up from sleep

CMD_OTA 

request initiation of OTA

CMD_VMCU_OTA 

request initiation of VMCU OTA

CMD_SET_NODE_PROPERTIES 

set various e12 node properties e.g logmask, activating captive portal etc

CMD_DEBUG_BLINK 

initiate a debug blink of led on e12 node

◆ e12_err_t

enum class e12_err_t : int8_t
strong

Used to indicate the error status of an operation.

Enumerator
ERR_NONE 
ERR_RETRY_LATER 

◆ e12_evt_status_t

enum class e12_evt_status_t : uint8_t
strong

Used to indicate the status of an event. This information is typically carried in a log event.

Enumerator
STATUS_DONE 
STATUS_NEW 
STATUS_IN_PROCESSING 
STATUS_IN_WAITING 

◆ e12_node_op_status_t

enum class e12_node_op_status_t : uint8_t
strong

Used to indicate the operation status of an e12 node e.g active, sleep, ota etc.

Enumerator
STATUS_NONE 
STATUS_ACTIVE 
STATUS_SLEEP 
STATUS_OTA 
STATUS_VMCU_OTA 

◆ e12_release_t

enum class e12_release_t : uint8_t
strong
Enumerator
STABLE 

Stable release.

CANARY 

Canary release.

DEV 

Development release.

◆ mcu_arch_t

enum class mcu_arch_t : uint8_t
strong

Supported MCU architecture.

Enumerator
ARCH_NONE 
ARCH_ATMEGA328 
ARCH_SAMD21 

◆ mcu_flashing_protocol_t

enum class mcu_flashing_protocol_t : uint8_t
strong

Supported MCU flashing protocols architecture.

Enumerator
PROTOCOL_NONE 
PROTOCOL_STK500 
PROTOCOL_BOSSA 

Function Documentation

◆ __attribute__()

struct __attribute__ ( (packed, aligned(4))  )

digital = 0, analog = 1

read = 0, write = 1

req = 0, response = 1

pin number

digital pin (0/1), analog pin (0 - 2^16)

mask of digital inputs

mask of analog inputs

mask of digital inputs

mask of analog inputs

Variable Documentation

◆ ctl_log_t

ctl_log_t

◆ e12_auth_data_t

e12_auth_data_t

◆ e12_ctl_msg_t

e12_ctl_msg_t

◆ e12_data_t

e12_data_t

◆ e12_debug_blink_t

e12_debug_blink_t

◆ e12_device_t

e12_device_t

◆ e12_header_t

e12_header_t

◆ e12_log_evt_t

e12_log_evt_t

◆ e12_node_properties_t

e12_node_properties_t

◆ e12_node_state_t

e12_node_state_t

◆ e12_onwire_head_t

e12_onwire_head_t

◆ e12_onwire_t

e12_onwire_t

◆ e12_packet_t

e12_packet_t

◆ e12_wakeup_data_t

e12_wakeup_data_t