summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAditya Naik2020-08-10 14:07:57 -0400
committerAditya Naik2020-08-10 14:07:57 -0400
commit25bf912396cf6284b3998d295e3f7661ec73bd0a (patch)
treebfc549a9ed6aa20876c71b2bcbece88659e020f6
parenta3120f845c6e2f4cfb7a12810881024a802fc7f4 (diff)
Dataflow state machine function implementation progress
-rw-r--r--include/dataflow.h25
-rw-r--r--src/master_posix.c14
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;