diff options
| author | Aditya Naik | 2020-08-10 14:07:57 -0400 |
|---|---|---|
| committer | Aditya Naik | 2020-08-10 14:07:57 -0400 |
| commit | 25bf912396cf6284b3998d295e3f7661ec73bd0a (patch) | |
| tree | bfc549a9ed6aa20876c71b2bcbece88659e020f6 | |
| parent | a3120f845c6e2f4cfb7a12810881024a802fc7f4 (diff) | |
Dataflow state machine function implementation progress
| -rw-r--r-- | include/dataflow.h | 25 | ||||
| -rw-r--r-- | src/master_posix.c | 14 |
2 files changed, 15 insertions, 24 deletions
diff --git a/include/dataflow.h b/include/dataflow.h index 665c92d..4d6b6c0 100644 --- a/include/dataflow.h +++ b/include/dataflow.h @@ -21,18 +21,6 @@ * */ -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, @@ -56,17 +44,20 @@ typedef enum DOC_codes { #define DF_STATE_TABLE(ENTRY) \ ENTRY(DF_IDLE, DF_func_idle) \ ENTRY(DF_RX_DOC, DF_rx_doc) \ + ENTRY(DF_RX_CTS, DF_rx_cts) \ ENTRY(DF_RX_DATA, DF_rx_data) \ ENTRY(DF_RX_CMD, DF_rx_cmd) \ ENTRY(DF_TX_DATA, DF_tx_data) \ ENTRY(DF_TX_CMD, DF_tx_cmd) -enum { - /* DF_STATE_TABLE(EXPAND_AS_ENUM) */ - /* NUM_DF_STATES, */ +typedef enum dataflow_states { + DF_STATE_TABLE(EXPAND_AS_ENUM) + NUM_DF_STATES, + DF_FAIL, + DF_SUCCESS, DF_STATE_FAIL, - DF_STATE_SUCCESS -}; + DF_STATE_SUCCESS, +} dataflow_states_t; typedef int (*df_func_t)(p_stream_t, void**); diff --git a/src/master_posix.c b/src/master_posix.c index ac5ff55..ec60065 100644 --- a/src/master_posix.c +++ b/src/master_posix.c @@ -59,7 +59,7 @@ hs_func_t hs_jumptable[NUM_HS_STATES] = { HS_STATE_TABLE(EXPAND_AS_JUMPTABLE) }; -/* df_func_t df_jumptable[NUM_HS_STATES] = { */ +/* df_func_t df_jumptable[NUM_DF_STATES] = { */ /* DF_STATE_TABLE(EXPAND_AS_JUMPTABLE) */ /* }; */ @@ -87,7 +87,7 @@ static void *handshake_func(void * pvArgs); static void *dataflow_func(void *pvArgs); static void *routing_func(void *pvArgs); -dataflow_status_t device_dataflow(uint8_t i2c_addr, uint32_t SOR_code, uint8_t routing_buf_idx); +dataflow_states_t device_dataflow(uint8_t i2c_addr, uint32_t SOR_code, uint8_t routing_buf_idx); bool routing(void); bool cmd_routing(void); uint8_t get_CTS(uint8_t i2c_addr); @@ -221,10 +221,10 @@ static void *routing_func(void *pvArgs) return NULL; } -dataflow_status_t device_dataflow(uint8_t i2c_addr, uint32_t SOR_code, volatile uint8_t rbuf_idx) +dataflow_states_t device_dataflow(uint8_t i2c_addr, uint32_t SOR_code, volatile uint8_t rbuf_idx) { uint8_t dev_idx = GET_IDX_FROM_ADDR(i2c_addr); - dataflow_status_t df_status = DF_IDLE; + dataflow_states_t df_status = DF_IDLE; uint8_t CTS_buf[2] = {0x2, 0xFF}; uint8_t DOC_buf[4]; @@ -276,11 +276,11 @@ dataflow_status_t device_dataflow(uint8_t i2c_addr, uint32_t SOR_code, volatile df_status = DF_SUCCESS; } else if (DOC_buf[1] == DATA) { - df_status = DF_CTS; + df_status = DF_RX_CTS; data_len = DOC_buf[3]; } else if (DOC_buf[1] == CMD_UNICAST) { - df_status = DF_CTS; + df_status = DF_RX_CTS; cmd_dest = DOC_buf[0]; data_len = DOC_buf[3]; } @@ -297,7 +297,7 @@ dataflow_status_t device_dataflow(uint8_t i2c_addr, uint32_t SOR_code, volatile break; } - case (DF_CTS): + case (DF_RX_CTS): { if (stream.write(CTS_buf, 2, vptr, &stream) != 0) { df_status = DF_FAIL; |
