2020#include "fhss_config.h"
2121#include "fhss_common.h"
2222#include "channel_functions.h"
23+ #include "fhss_ws.h"
24+ #include "nsdynmemLIB.h"
2325#include "ns_trace.h"
26+ #include <string.h>
2427
2528#define TRACE_GROUP "fhss"
2629
@@ -42,19 +45,34 @@ static void fhss_ws_superframe_callback(fhss_structure_t *fhss_structure)
4245static void fhss_ws_update_channel_callback (fhss_structure_t * fhss_structure )
4346{
4447 uint8_t mac_address [8 ];
48+ int32_t next_channel ;
4549 fhss_structure -> callbacks .read_mac_address (fhss_structure -> fhss_api , mac_address );
46- int32_t next_channel = fhss_structure -> rx_channel = dh1cf_get_uc_channel_index (fhss_structure -> uc_channel_index , mac_address , fhss_structure -> number_of_channels );
47- fhss_structure -> uc_channel_index ++ ;
50+ if (fhss_structure -> ws -> channel_function == WS_FIXED_CHANNEL ) {
51+
52+ } else if (fhss_structure -> ws -> channel_function == WS_TR51CF ) {
53+
54+ } else if (fhss_structure -> ws -> channel_function == WS_DH1CF ) {
55+ next_channel = fhss_structure -> rx_channel = dh1cf_get_uc_channel_index (fhss_structure -> ws -> slot , mac_address , fhss_structure -> number_of_channels );
56+ } else if (fhss_structure -> ws -> channel_function == WS_VENDOR_DEF_CF ) {
57+ //TODO: Callback to get channel schedule from application
58+ }
59+ fhss_structure -> ws -> slot ++ ;
4860#ifdef FHSS_CHANNEL_DEBUG
49- tr_info ("%" PRIu32 " UC %u %u " , fhss_structure -> platform_functions .fhss_get_timestamp (fhss_structure -> fhss_api ), fhss_structure -> uc_channel_index - 1 , next_channel );
61+ tr_info ("%" PRIu32 " UC %u" , fhss_structure -> platform_functions .fhss_get_timestamp (fhss_structure -> fhss_api ), next_channel );
5062#endif /*FHSS_CHANNEL_DEBUG*/
5163 fhss_structure -> callbacks .change_channel (fhss_structure -> fhss_api , next_channel );
5264}
5365
54- void fhss_ws_set_internal_callbacks (fhss_structure_t * fhss_structure )
66+ int fhss_ws_set_internal_callbacks (fhss_structure_t * fhss_structure )
5567{
5668 fhss_structure -> update_channel = fhss_ws_update_channel_callback ;
5769 fhss_structure -> update_superframe = fhss_ws_superframe_callback ;
5870 fhss_structure -> read_compensation = NULL ;
5971 fhss_structure -> handle_state_set = fhss_ws_handle_state_set ;
72+ fhss_structure -> ws = ns_dyn_mem_alloc (sizeof (fhss_ws_t ));
73+ if (!fhss_structure -> ws ) {
74+ return -1 ;
75+ }
76+ memset (fhss_structure -> ws , 0 , sizeof (fhss_ws_t ));
77+ return 0 ;
6078}
0 commit comments