summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Duchon2012-04-26 00:19:34 +0200
committerFlorent Duchon2012-05-04 00:06:28 +0200
commitf0b2b71e96ac2940e33736e78c6b7876c4ad7877 (patch)
tree0cda22c04934ccddf7062498f6c77e37fd7d935f
parent4820a5e4f404e2871945433da4fa3b5c7c3f7029 (diff)
digital/beacon: clean network.* files
-rw-r--r--digital/beacon/src/network.c182
-rw-r--r--digital/beacon/src/network.h76
2 files changed, 138 insertions, 120 deletions
diff --git a/digital/beacon/src/network.c b/digital/beacon/src/network.c
index 75b84b97..3322075b 100644
--- a/digital/beacon/src/network.c
+++ b/digital/beacon/src/network.c
@@ -45,7 +45,6 @@ extern AppState_t appState;
extern DeviceType_t deviceType;
-static uint8_t retryCounter = 0; // Data sending retries counter
// Leave request, used for router to leave the network when communication was interrupted
static ZDO_ZdpReq_t leaveReq;
@@ -101,8 +100,6 @@ void ZDO_StartNetworkConf(ZDO_StartNetworkConf_t* confirmInfo)
{
if (confirmInfo->status == ZDO_SUCCESS_STATUS)
{
- retryCounter = 0;
-
appState = APP_NETWORK_JOINED_STATE;
// Set application endpoint properties
@@ -134,81 +131,14 @@ void ZDO_StartNetworkConf(ZDO_StartNetworkConf_t* confirmInfo)
else
{
// uprintf("CONNECTION FAILED. confirmInfo->status = %x\n\r",confirmInfo->status);
+
+ /* if communication is failed, try to rejoin */
appState = APP_NETWORK_JOIN_REQUEST;
}
}
-
-/* Update network status event handler */
-void ZDO_MgmtNwkUpdateNotf(ZDO_MgmtNwkUpdateNotf_t *nwkParams)
-{
- switch (nwkParams->status)
- {
- case ZDO_NETWORK_STARTED_STATUS:
- break;
- case ZDO_NETWORK_LOST_STATUS:
- {
- APS_UnregisterEndpointReq_t unregEndpoint;
- unregEndpoint.endpoint = endpointParams.simpleDescriptor->endpoint;
- APS_UnregisterEndpointReq(&unregEndpoint);
- // try to rejoin the network
- appState = APP_NETWORK_JOIN_REQUEST;
- break;
- }
- case ZDO_NWK_UPDATE_STATUS:
- break;
- default:
- break;
- }
-}
-
-
-
-/* brief Handler of aps data sent confirmation */
-void APS_DataConf(APS_DataConf_t* confInfo)
-{
- if (APS_SUCCESS_STATUS != confInfo->status)
- {
- retryCounter++;
- if (MAX_RETRIES_BEFORE_REJOIN == retryCounter)
- {
- network_leave();
- }
- else
- {
- // Data not delivered, resend.
-// send_data();
- }
- return;
- }
- retryCounter = 0;
-}
-
-
-/* APS data indication handler */
-void APS_DataIndication(APS_DataInd_t* indData)
-{
- AppMessage_t *appMessage = (AppMessage_t *) indData->asdu;
- // Data received indication
- switch(appMessage->data[0])
- {
- case 0x42: // COMMANDE JACK
-// jack = appMessage->data[2];
- break;
- case 0x43: // Update ANGLE
-// beacon_number = appMessage->data[1];
-// angle_received = appMessage->data[2];
-// update_position(beacon_number,angle_received);
- break;
- default:
- uprintf("Unknown data type received = %x\r\n",appMessage->data[0]);
- break;
- }
-}
-
-
-/* Leave network */
+/* This function quits the joined network */
void network_leave(void)
{
ZDO_MgmtLeaveReq_t *zdpLeaveReq = &leaveReq.req.reqPayload.mgmtLeaveReq;
@@ -241,39 +171,50 @@ void zdpLeaveResp(ZDO_ZdpResp_t *zdpResp)
}
-void send_data(uint8_t type, uint8_t data)
-{
- zigbit_tx_buffer.message.data[0]=type;
- zigbit_tx_buffer.message.data[1]=data;
- APS_DataReq(&config);
-}
-
-// void send_angle(int angle_degree)
-// {
-// zigbit_tx_buffer.message.data[0]=0x43;
-// zigbit_tx_buffer.message.data[1]=beacon_id;
-// zigbit_tx_buffer.message.data[2]=angle_degree;
-// }
-
-
-
/* Wakeup event handler (dummy) */
void ZDO_WakeUpInd(void)
{
}
+
/* Stub for ZDO Binding Indication */
void ZDO_BindIndication(ZDO_BindInd_t *bindInd)
{
(void)bindInd;
}
+
/* Stub for ZDO Unbinding Indication */
void ZDO_UnbindIndication(ZDO_UnbindInd_t *unbindInd)
{
(void)unbindInd;
}
+/* Update network status event handler */
+void ZDO_MgmtNwkUpdateNotf(ZDO_MgmtNwkUpdateNotf_t *nwkParams)
+{
+ switch (nwkParams->status)
+ {
+ case ZDO_NETWORK_STARTED_STATUS:
+ break;
+ case ZDO_NETWORK_LOST_STATUS:
+ {
+ APS_UnregisterEndpointReq_t unregEndpoint;
+ unregEndpoint.endpoint = endpointParams.simpleDescriptor->endpoint;
+ APS_UnregisterEndpointReq(&unregEndpoint);
+
+ // try to rejoin the network
+ appState = APP_NETWORK_JOIN_REQUEST;
+ break;
+ }
+ case ZDO_NWK_UPDATE_STATUS:
+ break;
+ default:
+ break;
+ }
+}
+
+
/* This function returns the LQI of the joined network */
uint8_t network_get_lqi(void)
{
@@ -285,6 +226,7 @@ uint8_t network_get_lqi(void)
return lqiRssi.lqi;
}
+
/* This function returns the RSSI of the joined network */
int8_t network_get_rssi(void)
{
@@ -297,4 +239,64 @@ int8_t network_get_rssi(void)
}
- \ No newline at end of file
+/* This function must be used to send data through zigbee network */
+void network_send_data(TMessage_type type, uint8_t data)
+{
+ /* Message type*/
+ zigbit_tx_buffer.message.data[NETWORK_MSG_TYPE_FIELD] = type;
+
+ /* Source address */
+ zigbit_tx_buffer.message.data[NETWORK_MSG_ADDR_FIELD] = CS_NWK_ADDR;
+
+ /* Data */
+ zigbit_tx_buffer.message.data[NETWORK_MSG_DATA_FIELD] = data;
+
+ /* Bitcloud sending request */
+ APS_DataReq(&config);
+}
+
+
+/* brief Handler of aps data sent confirmation */
+void APS_DataConf(APS_DataConf_t* confInfo)
+{
+ static int retryCounter = 0;
+ if (APS_SUCCESS_STATUS != confInfo->status)
+ {
+ retryCounter++;
+ if (MAX_RETRIES_BEFORE_REJOIN == retryCounter)
+ {
+ network_leave();
+ }
+ else
+ {
+ // Data not delivered, resend.
+ APS_DataReq(&config);
+ }
+ return;
+ }
+ retryCounter = 0;
+}
+
+
+/* APS data indication handler */
+void APS_DataIndication(APS_DataInd_t* indData)
+{
+ AppMessage_t *appMessage = (AppMessage_t *) indData->asdu;
+
+ // Data received indication
+ switch(appMessage->data[NETWORK_MSG_TYPE_FIELD])
+ {
+ case NETWORK_JACK_STATE:
+ break;
+ case NETWORK_OPPONENT_NUMBER:
+ break;
+ case NETWORK_ANGLE_DEGREE:
+
+ /* New angle is avaiiable, update position */
+// update_position(appMessage->data[NETWORK_MSG_ADDR_FIELD],appMessage->data[NETWORK_MSG_DATA_FIELD]);
+ break;
+ default:
+ uprintf("Unknown data type received = %x\r\n",appMessage->data[NETWORK_MSG_TYPE_FIELD]);
+ break;
+ }
+}
diff --git a/digital/beacon/src/network.h b/digital/beacon/src/network.h
index 10673c25..8bb82954 100644
--- a/digital/beacon/src/network.h
+++ b/digital/beacon/src/network.h
@@ -28,60 +28,76 @@
#include <zdo.h>
-// #define MAX_RETRIES_BEFORE_REJOIN 6
-
-// typedef struct
-// {
-// uint8_t header[APS_ASDU_OFFSET];
-// uint8_t data;
-// uint8_t footer[APS_AFFIX_LENGTH - APS_ASDU_OFFSET];
-// }buff_t;
-
-
typedef struct
{
- uint8_t messageId; // message ID
- uint8_t data[APP_MAX_PACKET_SIZE]; // data
-}AppMessage_t;
+ uint8_t messageId; // message ID
+ uint8_t data[APP_MAX_PACKET_SIZE]; // data
+} AppMessage_t;
+
-// Application network messsage buffer descriptor
typedef struct
{
- uint8_t header[APS_ASDU_OFFSET]; // Auxiliary header (required by stack)
- AppMessage_t message; // Application message
- uint8_t footer[APS_AFFIX_LENGTH - APS_ASDU_OFFSET]; // Auxiliary footer (required by stack)
-}AppMessageBuffer_t;
+ uint8_t header[APS_ASDU_OFFSET]; // Auxiliary header (required by stack)
+ AppMessage_t message; // Application message
+ uint8_t footer[APS_AFFIX_LENGTH - APS_ASDU_OFFSET]; // Auxiliary footer (required by stack)
+} AppMessageBuffer_t;
+typedef enum
+{
+ NETWORK_JACK_STATE,
+ NETWORK_OPPONENT_NUMBER,
+ NETWORK_ANGLE_DEGREE
+} TMessage_type;
-void APS_DataIndication(APS_DataInd_t* dataInd);
-void APS_DataConf(APS_DataConf_t* confInfo);
-void ZDO_StartNetworkConf(ZDO_StartNetworkConf_t* confirmInfo);
-void ZDO_UnbindIndication(ZDO_UnbindInd_t *unbindInd);
-void ZDO_BindIndication(ZDO_BindInd_t *bindInd);
-void ZDO_WakeUpInd(void);
+typedef enum
+{
+ NETWORK_MSG_TYPE_FIELD,
+ NETWORK_MSG_ADDR_FIELD,
+ NETWORK_MSG_DATA_FIELD
+} TMessage_field;
+/* This function intializes network parameters */
void network_init(void);
+
+/* This function starts the network according to the defined configuraiton*/
void network_start(void);
-/* This function returns the network status */
-uint16_t network_get_status(void);
+/* ZDO_StartNetwork primitive confirmation callback */
+void ZDO_StartNetworkConf(ZDO_StartNetworkConf_t* confirmInfo);
-void send_data(uint8_t type, uint8_t data);
-void send_angle(int angle_degree);
+/* This function quits the joined network */
void network_leave(void);
+
/* Leave network response */
void zdpLeaveResp(ZDO_ZdpResp_t *zdpResp);
+/* Wakeup event handler (dummy) */
+void ZDO_WakeUpInd(void);
+
+/* Stub for ZDO Binding Indication */
+void ZDO_BindIndication(ZDO_BindInd_t *bindInd);
+
+/* Stub for ZDO Unbinding Indication */
+void ZDO_UnbindIndication(ZDO_UnbindInd_t *unbindInd);
+
+/* Update network status event handler */
+void ZDO_MgmtNwkUpdateNotf(ZDO_MgmtNwkUpdateNotf_t *nwkParams);
+
/* This function returns the LQI of the joined network */
uint8_t network_get_lqi(void);
/* This function returns the RSSI of the joined network */
int8_t network_get_rssi(void);
+/* This function must be used to send data through zigbee network */
+void network_send_data(TMessage_type type, uint8_t data);
+/* brief Handler of aps data sent confirmation */
+void APS_DataConf(APS_DataConf_t* confInfo);
-#endif // ifndef _NETWORK_H
+/* APS data indication handler */
+void APS_DataIndication(APS_DataInd_t* indData);
-// eof network.h
+#endif