/* * * Dataflow Status Enumeration * * This typedef governs the dataflow state machine. Enums should be self explanatory * * TODO Handle other DF pathways for slave RX datapoint and slave RX command * * |------------+-----+----------------------------------------+---------------------+-------------------------| * | Status | Int | Status Invariant | Action | Next Status | * |------------+-----+----------------------------------------+---------------------+-------------------------| * | DF_IDLE | 0 | Ready to send m2s_SOR | Send m2s_SOR | DF_RX_DOC or ??? | * | DF_RX_DOC | 1 | Sent m2s_SOR; ready to receive s2m_DOC | Receive s2m_DOC | DF_CTS | * | DF_CTS | 2 | Received m2s_SOR; ready to send DF_CTS | Send m2s_CTS | DF_RX_DATA or DF_RX_CMD | * | DF_RX_DATA | 3 | Sent m2s_CTS; receive s2m_data | Receive s2m_data | DF_SUCCESS | * | DF_RX_CMD | 4 | sent m2s_CTS receive s2m_command | Receive s2m_command | DF_SUCCESS | * |------------+-----+----------------------------------------+---------------------+-------------------------| * * */ typedef enum dataflow_status { DF_IDLE = 0, DF_RX_DOC = 1, DF_CTS = 2, DF_RX_DATA = 3, DF_RX_CMD = 4, DF_SUCCESS = 5, DF_FAIL = 6, DF_TX_DATA = 7, DF_TX_CMD = 8 } dataflow_status_t; typedef enum SOR_codes { SLAVE_TX = 1, SLAVE_RX_DATAPOINT = 2, SLAVE_RX_COMMAND = 3 } SOR_codes_t; typedef enum DOC_codes { CMD_UNICAST = 0x1, CMD_MULTICAST = 0x2, CMD_BROADCAST = 0x3, RESERVED = 0x4, DATA = 0x5 } DOC_codes_t;