Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: lifiReceiver.cpp
- Revision:
- 34:d704131107dd
- Parent:
- 23:45461af5efc5
- Child:
- 35:dcddce1fe126
--- a/lifiReceiver.cpp Tue Apr 09 10:44:11 2019 +0000
+++ b/lifiReceiver.cpp Wed Apr 10 11:56:56 2019 +0900
@@ -21,15 +21,6 @@
OP_HF, OP_LF, OP_PLOT_ADC, OP_RESERVED
};
-enum receiver_state {
- IDLE_STATE = 0, //waiting for sync
- SYNC_STATE, //synced, waiting for STX
- START_STATE, //STX received
- LENGTH_LSB_STATE,
- LENGTH_MSB_STATE,
- DATA_STATE, //receiving DATA
- END_STATE
-};
///////////////////////////////////////////////////////
//////////// GLOBAL VARIABLES //////////////////////
@@ -53,58 +44,10 @@
//int probe_adc_low = 0;
//int probe_adc_gap = 0;
-struct RX_VARS {
- int sensorValue;
- int oldValue;
- int edge_val;
- int steady_count;
- int dist_last_sync;
- unsigned int detected_word;
- int new_word;
- long shift_reg;
- int old_edge_val;
- int probe_adc_high;
- int probe_adc_low;
- int probe_adc_gap;
- enum receiver_state frame_state;
- uint8_t rx_frame_buffer[FRAME_BUFFER_SIZE];
- //////////// keep received message
- bool is_valid;
- bool is_received;
- // uint8_t rx_frame_buffer_save[FRAME_BUFFER_SIZE];
- int probe_adc_high_received;
- int probe_adc_low_received;
- int probe_adc_gap_received;
- ///////////
- // no auxiliary security header
- int rx_frame_index;
- int rx_frame_size;
- uint16_t pdu_length;
- uint16_t pdu_length_count;
-// uint16_t pdu_length_save;
-// uint16_t pdu_length_count_save;
- uint16_t frame_length;
-// uint16_t frame_length_save;
-};
-// __attribute__((packed));
+
-struct RX_VARS_RECEIVED {
- int probe_adc_high;
- int probe_adc_low;
- int probe_adc_gap;
- uint8_t rx_frame_buffer[FRAME_BUFFER_SIZE];
- //////////// keep received message
- bool is_valid;
- bool is_received;
- ///////////
- int rx_frame_size;
- uint16_t pdu_length;
- uint16_t pdu_length_count;
- uint16_t frame_length;
-};
-
-static RX_VARS rx_vars[LIFI_MIMO_CHANNEL_NUM];
-static RX_VARS_RECEIVED rx_vars_received[LIFI_MIMO_CHANNEL_NUM];
+static LIFI_RECEIVING_FRAME rx_vars[LIFI_MIMO_CHANNEL_NUM];
+static LIFI_RX_FRAME rx_vars_received[LIFI_MIMO_CHANNEL_NUM];
void LifiRx_CopyAdcInfo_FromReceivedFrame(int channel, int high, int low)
{
@@ -337,7 +280,7 @@
#endif
}
-int add_byte_to_frame_v1(int channel,uint8_t * rx_frame_buffer, int * rx_frame_index, int * rx_frame_size, enum receiver_state * frame_state,unsigned char data)
+int add_byte_to_frame_v1(int channel,uint8_t * rx_frame_buffer, int * rx_frame_index, int * rx_frame_size, enum lifi_rx_state * frame_state,unsigned char data)
{
if(data == SYNC_SYMBOL/* && (*rx_frame_index) < 0*/) {
(*rx_frame_index) = 0 ;
@@ -387,7 +330,7 @@
int add_byte_to_frame(int channel, uint8_t * rx_frame_buffer,
int * rx_frame_index, int * rx_frame_size,
- enum receiver_state * frame_state, unsigned char data)
+ enum lifi_rx_state * frame_state, unsigned char data)
{
if (data == SYNC_SYMBOL/* && (*rx_frame_index) < 0*/) {
(*rx_frame_index) = 0;
@@ -417,31 +360,18 @@
return -1;
}
- } else if ((*frame_state) == START_STATE) {
- (*frame_state) = LENGTH_LSB_STATE;
- rx_vars[channel].pdu_length = data;
-#if RX_DEBUG_FRAME
- printf("%dLENGTH_LSB(%d) ",channel+1,data);
-#endif
- } else if ((*frame_state) == LENGTH_LSB_STATE) {
+ }
+ else if ((*frame_state) == START_STATE) {
- (*frame_state) = LENGTH_MSB_STATE;
- rx_vars[channel].pdu_length = rx_vars[channel].pdu_length + (data << 8);
+ rx_vars[channel].pdu_length = data ;
rx_vars[channel].pdu_length_count = 0;
rx_vars[channel].frame_length = rx_vars[channel].pdu_length + LIFI_FRAME_HEADER_SIZE;
#if RX_DEBUG_FRAME
- printf("%dLENGTH_MSB(%d) length=%d ",channel+1,data, rx_vars[channel].pdu_length);
-#endif
-
- } else if ((*frame_state) == LENGTH_MSB_STATE) {
-
-#if RX_DEBUG_FRAME
- printf("%dD=%c[%x] ",channel+1,data,data);
+ printf("%dLENGTH(%d) length=%d ",channel+1,data, rx_vars[channel].pdu_length);
#endif
(*frame_state) = DATA_STATE;
- rx_vars[channel].pdu_length_count++;
-
- } else if ((*frame_state) == DATA_STATE) {
+ }
+ else if ((*frame_state) == DATA_STATE) {
rx_vars[channel].pdu_length_count++;
// when ETX
if (rx_vars[channel].pdu_length_count
@@ -543,19 +473,12 @@
rx_vars[channel].new_word = 0;
// return 1 from add_byte_to_frame() means got ETX
-#if LIFI_PACKET_USE_LENGTH
if ((byte_added = add_byte_to_frame(channel,
rx_vars[channel].rx_frame_buffer,
&rx_vars[channel].rx_frame_index,
&rx_vars[channel].rx_frame_size, &rx_vars[channel].frame_state,
received_data)) > 0)
-#else
- if ((byte_added = add_byte_to_frame_v1(channel,
- rx_vars[channel].rx_frame_buffer,
- &rx_vars[channel].rx_frame_index,
- &rx_vars[channel].rx_frame_size, &rx_vars[channel].frame_state,
- received_data)) > 0)
-#endif
+
{
valid_chars = true;
// 여기서 ETX를 0으로 변경해 버린다.