--- a/interfaces/opensync_stats.proto +++ b/interfaces/opensync_stats.proto @@ -263,6 +263,7 @@ message Survey { optional uint32 busy_self = 8; /* Rx_self (derived from succesful Rx frames)*/ optional uint32 offset_ms = 9; optional uint32 busy_ext = 10; /* 40MHz extention channel busy */ + optional uint32 noise = 11; } message SurveyAvg { required uint32 channel = 1; @@ -271,6 +272,7 @@ message Survey { optional AvgType busy_rx = 4; /* Rx = Rx_obss + Rx_errr (self and obss errors) */ optional AvgType busy_self = 5; /* Rx_self (derived from succesful Rx frames)*/ optional AvgType busy_ext = 6; /* 40MHz extention channel busy */ + optional AvgType noise = 7; } required RadioBandType band = 1; required SurveyType survey_type = 2; --- a/src/lib/datapipeline/inc/dpp_survey.h +++ b/src/lib/datapipeline/inc/dpp_survey.h @@ -52,6 +52,7 @@ typedef struct dpp_avg_t chan_self; dpp_avg_t chan_rx; dpp_avg_t chan_tx; + dpp_avg_t chan_noise; ds_dlist_node_t node; } dpp_survey_record_avg_t; @@ -67,6 +68,7 @@ typedef struct uint32_t chan_self; uint32_t chan_rx; uint32_t chan_tx; + uint32_t chan_noise; uint32_t duration_ms; /* Linked list survey data */ --- a/src/lib/datapipeline/inc/opensync_stats.pb-c.h +++ b/src/lib/datapipeline/inc/opensync_stats.pb-c.h @@ -1,29 +1,3 @@ -/* -Copyright (c) 2015, Plume Design Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the Plume Design Inc. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - /* Generated by the protocol buffer compiler. DO NOT EDIT! */ /* Generated from: opensync_stats.proto */ @@ -36,7 +10,7 @@ PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1000000 # error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. -#elif 1002001 < PROTOBUF_C_MIN_COMPILER_VERSION +#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION # error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. #endif @@ -195,7 +169,7 @@ struct _Sts__AvgType }; #define STS__AVG_TYPE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__avg_type__descriptor) \ - , 0, 0,0, 0,0, 0,0 } + , 0, 0, 0, 0, 0, 0, 0 } struct _Sts__Neighbor__NeighborBss @@ -215,7 +189,7 @@ struct _Sts__Neighbor__NeighborBss }; #define STS__NEIGHBOR__NEIGHBOR_BSS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__neighbor__neighbor_bss__descriptor) \ - , NULL, NULL, 0,0, 0,0, 0,0, 0, 0,0 } + , NULL, NULL, 0, 0, 0, 0, 0, STS__CHAN_WIDTH__CHAN_WIDTH_UNKNOWN, 0, 0, STS__DIFF_TYPE__ADDED } /* @@ -241,7 +215,7 @@ struct _Sts__Neighbor }; #define STS__NEIGHBOR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__neighbor__descriptor) \ - , 0, 0, 0,0, 0,NULL, 0,0 } + , STS__RADIO_BAND_TYPE__BAND2G, STS__NEIGHBOR_TYPE__ONCHAN_SCAN, 0, 0, 0,NULL, 0, STS__REPORT_TYPE__RAW } struct _Sts__Client__Stats @@ -272,7 +246,7 @@ struct _Sts__Client__Stats }; #define STS__CLIENT__STATS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client__stats__descriptor) \ - , 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct _Sts__Client__RxStats__ChainRSSI @@ -288,7 +262,7 @@ struct _Sts__Client__RxStats__ChainRSSI }; #define STS__CLIENT__RX_STATS__CHAIN_RSSI__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client__rx_stats__chain_rssi__descriptor) \ - , 0, 0, 0,0 } + , 0, 0, 0, 0 } struct _Sts__Client__RxStats @@ -316,7 +290,7 @@ struct _Sts__Client__RxStats }; #define STS__CLIENT__RX_STATS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client__rx_stats__descriptor) \ - , 0, 0, 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,NULL } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,NULL } struct _Sts__Client__TxStats @@ -340,7 +314,7 @@ struct _Sts__Client__TxStats }; #define STS__CLIENT__TX_STATS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client__tx_stats__descriptor) \ - , 0, 0, 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct _Sts__Client__TidStats__Sojourn @@ -372,7 +346,7 @@ struct _Sts__Client__TidStats__Sojourn }; #define STS__CLIENT__TID_STATS__SOJOURN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client__tid_stats__sojourn__descriptor) \ - , 0, 0, 0,0, 0,0, 0,0 } + , STS__WMM_AC__WMM_AC_VO, 0, 0, 0, 0, 0, 0, 0 } struct _Sts__Client__TidStats @@ -385,7 +359,7 @@ struct _Sts__Client__TidStats }; #define STS__CLIENT__TID_STATS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client__tid_stats__descriptor) \ - , 0,NULL, 0,0 } + , 0,NULL, 0, 0 } /* @@ -424,7 +398,7 @@ struct _Sts__Client }; #define STS__CLIENT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client__descriptor) \ - , NULL, NULL, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, NULL, 0,NULL, 0,NULL, 0,NULL, 0,0 } + , NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct _Sts__ClientReport @@ -439,7 +413,7 @@ struct _Sts__ClientReport }; #define STS__CLIENT_REPORT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__client_report__descriptor) \ - , 0, 0,0, 0,NULL, 0 } + , STS__RADIO_BAND_TYPE__BAND2G, 0, 0, 0,NULL, 0 } struct _Sts__Survey__SurveySample @@ -479,10 +453,12 @@ struct _Sts__Survey__SurveySample */ protobuf_c_boolean has_busy_ext; uint32_t busy_ext; + protobuf_c_boolean has_noise; + uint32_t noise; }; #define STS__SURVEY__SURVEY_SAMPLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__survey__survey_sample__descriptor) \ - , 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct _Sts__Survey__SurveyAvg @@ -509,10 +485,11 @@ struct _Sts__Survey__SurveyAvg * 40MHz extention channel busy */ Sts__AvgType *busy_ext; + Sts__AvgType *noise; }; #define STS__SURVEY__SURVEY_AVG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__survey__survey_avg__descriptor) \ - , 0, NULL, NULL, NULL, NULL, NULL } + , 0, NULL, NULL, NULL, NULL, NULL, NULL } /* @@ -539,7 +516,7 @@ struct _Sts__Survey }; #define STS__SURVEY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__survey__descriptor) \ - , 0, 0, 0,0, 0,NULL, 0,NULL, 0,0 } + , STS__RADIO_BAND_TYPE__BAND2G, STS__SURVEY_TYPE__ON_CHANNEL, 0, 0, 0,NULL, 0,NULL, 0, STS__REPORT_TYPE__RAW } struct _Sts__Capacity__QueueSample @@ -586,7 +563,7 @@ struct _Sts__Capacity__QueueSample }; #define STS__CAPACITY__QUEUE_SAMPLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__capacity__queue_sample__descriptor) \ - , 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } /* @@ -605,7 +582,7 @@ struct _Sts__Capacity }; #define STS__CAPACITY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__capacity__descriptor) \ - , 0, 0,0, 0,NULL } + , STS__RADIO_BAND_TYPE__BAND2G, 0, 0, 0,NULL } struct _Sts__Device__LoadAvg @@ -620,7 +597,7 @@ struct _Sts__Device__LoadAvg }; #define STS__DEVICE__LOAD_AVG__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__load_avg__descriptor) \ - , 0,0, 0,0, 0,0 } + , 0, 0, 0, 0, 0, 0 } struct _Sts__Device__RadioTemp @@ -633,7 +610,7 @@ struct _Sts__Device__RadioTemp }; #define STS__DEVICE__RADIO_TEMP__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__radio_temp__descriptor) \ - , 0,0, 0,0 } + , 0, STS__RADIO_BAND_TYPE__BAND2G, 0, 0 } struct _Sts__Device__Thermal__RadioTxChainMask @@ -646,7 +623,7 @@ struct _Sts__Device__Thermal__RadioTxCh }; #define STS__DEVICE__THERMAL__RADIO_TX_CHAIN_MASK__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__thermal__radio_tx_chain_mask__descriptor) \ - , 0,0, 0,0 } + , 0, STS__RADIO_BAND_TYPE__BAND2G, 0, 0 } struct _Sts__Device__Thermal @@ -661,7 +638,7 @@ struct _Sts__Device__Thermal }; #define STS__DEVICE__THERMAL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__thermal__descriptor) \ - , 0,NULL, 0,0, 0,0 } + , 0,NULL, 0, 0, 0, 0 } /* @@ -679,7 +656,7 @@ struct _Sts__Device__MemUtil }; #define STS__DEVICE__MEM_UTIL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__mem_util__descriptor) \ - , 0, 0, 0,0, 0,0 } + , 0, 0, 0, 0, 0, 0 } /* @@ -694,7 +671,7 @@ struct _Sts__Device__FsUtil }; #define STS__DEVICE__FS_UTIL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__fs_util__descriptor) \ - , 0, 0, 0 } + , STS__FS_TYPE__FS_TYPE_ROOTFS, 0, 0 } /* @@ -708,7 +685,7 @@ struct _Sts__Device__CpuUtil }; #define STS__DEVICE__CPU_UTIL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__cpu_util__descriptor) \ - , 0,0 } + , 0, 0 } /* @@ -760,7 +737,7 @@ struct _Sts__Device }; #define STS__DEVICE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__device__descriptor) \ - , NULL, 0,NULL, 0,0, 0,0, 0,NULL, NULL, 0,NULL, NULL, 0,NULL, 0,NULL } + , NULL, 0,NULL, 0, 0, 0, 0, 0,NULL, NULL, 0,NULL, NULL, 0,NULL, 0,NULL } struct _Sts__BSClient__BSEvent @@ -829,7 +806,7 @@ struct _Sts__BSClient__BSEvent }; #define STS__BSCLIENT__BSEVENT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__bsclient__bsevent__descriptor) \ - , 0, 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,{0,NULL} } + , STS__BSEVENT_TYPE__PROBE, 0, 0, 0, 0, 0, 0, 0, 0, STS__DISCONNECT_SRC__LOCAL, 0, STS__DISCONNECT_TYPE__DISASSOC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0,NULL} } struct _Sts__BSClient__BSBandReport @@ -868,7 +845,7 @@ struct _Sts__BSClient__BSBandReport }; #define STS__BSCLIENT__BSBAND_REPORT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__bsclient__bsband_report__descriptor) \ - , 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,NULL, NULL } + , STS__RADIO_BAND_TYPE__BAND2G, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,NULL, NULL } /* @@ -911,7 +888,7 @@ struct _Sts__RssiPeer__RssiSample }; #define STS__RSSI_PEER__RSSI_SAMPLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__rssi_peer__rssi_sample__descriptor) \ - , 0, 0,0 } + , 0, 0, 0 } /* @@ -937,7 +914,7 @@ struct _Sts__RssiPeer }; #define STS__RSSI_PEER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__rssi_peer__descriptor) \ - , NULL, 0,0, 0,NULL, NULL, 0,0, 0,0 } + , NULL, 0, STS__RSSI_PEER__RSSI_SOURCE__CLIENT, 0,NULL, NULL, 0, 0, 0, 0 } struct _Sts__RssiReport @@ -952,7 +929,7 @@ struct _Sts__RssiReport }; #define STS__RSSI_REPORT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&sts__rssi_report__descriptor) \ - , 0, 0, 0,0, 0,NULL } + , STS__RADIO_BAND_TYPE__BAND2G, STS__REPORT_TYPE__RAW, 0, 0, 0,NULL } /* --- a/src/lib/datapipeline/src/dppline.c +++ b/src/lib/datapipeline/src/dppline.c @@ -768,6 +768,7 @@ static void dppline_add_stat_survey(Sts_ CP_AVG(busy_self, chan_self); CP_AVG(busy_rx, chan_rx); CP_AVG(busy_ext, chan_busy_ext); + CP_AVG(noise, chan_noise); #undef CP_AVG } @@ -805,6 +806,7 @@ static void dppline_add_stat_survey(Sts_ CP_OPT(busy_self, chan_self); CP_OPT(busy_rx, chan_rx); CP_OPT(busy_ext, chan_busy_ext); + CP_OPT(noise, chan_noise); #undef CP_OPT --- a/src/lib/datapipeline/src/opensync_stats.pb-c.c +++ b/src/lib/datapipeline/src/opensync_stats.pb-c.c @@ -1,29 +1,3 @@ -/* -Copyright (c) 2015, Plume Design Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the Plume Design Inc. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - /* Generated by the protocol buffer compiler. DO NOT EDIT! */ /* Generated from: opensync_stats.proto */ @@ -36,7 +10,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI void sts__avg_type__init (Sts__AvgType *message) { - static Sts__AvgType init_value = STS__AVG_TYPE__INIT; + static const Sts__AvgType init_value = STS__AVG_TYPE__INIT; *message = init_value; } size_t sts__avg_type__get_packed_size @@ -73,19 +47,21 @@ void sts__avg_type__free_unpacked (Sts__AvgType *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__avg_type__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__neighbor__neighbor_bss__init (Sts__Neighbor__NeighborBss *message) { - static Sts__Neighbor__NeighborBss init_value = STS__NEIGHBOR__NEIGHBOR_BSS__INIT; + static const Sts__Neighbor__NeighborBss init_value = STS__NEIGHBOR__NEIGHBOR_BSS__INIT; *message = init_value; } void sts__neighbor__init (Sts__Neighbor *message) { - static Sts__Neighbor init_value = STS__NEIGHBOR__INIT; + static const Sts__Neighbor init_value = STS__NEIGHBOR__INIT; *message = init_value; } size_t sts__neighbor__get_packed_size @@ -122,49 +98,51 @@ void sts__neighbor__free_unpacked (Sts__Neighbor *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__neighbor__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__client__stats__init (Sts__Client__Stats *message) { - static Sts__Client__Stats init_value = STS__CLIENT__STATS__INIT; + static const Sts__Client__Stats init_value = STS__CLIENT__STATS__INIT; *message = init_value; } void sts__client__rx_stats__chain_rssi__init (Sts__Client__RxStats__ChainRSSI *message) { - static Sts__Client__RxStats__ChainRSSI init_value = STS__CLIENT__RX_STATS__CHAIN_RSSI__INIT; + static const Sts__Client__RxStats__ChainRSSI init_value = STS__CLIENT__RX_STATS__CHAIN_RSSI__INIT; *message = init_value; } void sts__client__rx_stats__init (Sts__Client__RxStats *message) { - static Sts__Client__RxStats init_value = STS__CLIENT__RX_STATS__INIT; + static const Sts__Client__RxStats init_value = STS__CLIENT__RX_STATS__INIT; *message = init_value; } void sts__client__tx_stats__init (Sts__Client__TxStats *message) { - static Sts__Client__TxStats init_value = STS__CLIENT__TX_STATS__INIT; + static const Sts__Client__TxStats init_value = STS__CLIENT__TX_STATS__INIT; *message = init_value; } void sts__client__tid_stats__sojourn__init (Sts__Client__TidStats__Sojourn *message) { - static Sts__Client__TidStats__Sojourn init_value = STS__CLIENT__TID_STATS__SOJOURN__INIT; + static const Sts__Client__TidStats__Sojourn init_value = STS__CLIENT__TID_STATS__SOJOURN__INIT; *message = init_value; } void sts__client__tid_stats__init (Sts__Client__TidStats *message) { - static Sts__Client__TidStats init_value = STS__CLIENT__TID_STATS__INIT; + static const Sts__Client__TidStats init_value = STS__CLIENT__TID_STATS__INIT; *message = init_value; } void sts__client__init (Sts__Client *message) { - static Sts__Client init_value = STS__CLIENT__INIT; + static const Sts__Client init_value = STS__CLIENT__INIT; *message = init_value; } size_t sts__client__get_packed_size @@ -201,13 +179,15 @@ void sts__client__free_unpacked (Sts__Client *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__client__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__client_report__init (Sts__ClientReport *message) { - static Sts__ClientReport init_value = STS__CLIENT_REPORT__INIT; + static const Sts__ClientReport init_value = STS__CLIENT_REPORT__INIT; *message = init_value; } size_t sts__client_report__get_packed_size @@ -244,25 +224,27 @@ void sts__client_report__free_unpacked (Sts__ClientReport *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__client_report__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__survey__survey_sample__init (Sts__Survey__SurveySample *message) { - static Sts__Survey__SurveySample init_value = STS__SURVEY__SURVEY_SAMPLE__INIT; + static const Sts__Survey__SurveySample init_value = STS__SURVEY__SURVEY_SAMPLE__INIT; *message = init_value; } void sts__survey__survey_avg__init (Sts__Survey__SurveyAvg *message) { - static Sts__Survey__SurveyAvg init_value = STS__SURVEY__SURVEY_AVG__INIT; + static const Sts__Survey__SurveyAvg init_value = STS__SURVEY__SURVEY_AVG__INIT; *message = init_value; } void sts__survey__init (Sts__Survey *message) { - static Sts__Survey init_value = STS__SURVEY__INIT; + static const Sts__Survey init_value = STS__SURVEY__INIT; *message = init_value; } size_t sts__survey__get_packed_size @@ -299,19 +281,21 @@ void sts__survey__free_unpacked (Sts__Survey *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__survey__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__capacity__queue_sample__init (Sts__Capacity__QueueSample *message) { - static Sts__Capacity__QueueSample init_value = STS__CAPACITY__QUEUE_SAMPLE__INIT; + static const Sts__Capacity__QueueSample init_value = STS__CAPACITY__QUEUE_SAMPLE__INIT; *message = init_value; } void sts__capacity__init (Sts__Capacity *message) { - static Sts__Capacity init_value = STS__CAPACITY__INIT; + static const Sts__Capacity init_value = STS__CAPACITY__INIT; *message = init_value; } size_t sts__capacity__get_packed_size @@ -348,61 +332,63 @@ void sts__capacity__free_unpacked (Sts__Capacity *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__capacity__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__device__load_avg__init (Sts__Device__LoadAvg *message) { - static Sts__Device__LoadAvg init_value = STS__DEVICE__LOAD_AVG__INIT; + static const Sts__Device__LoadAvg init_value = STS__DEVICE__LOAD_AVG__INIT; *message = init_value; } void sts__device__radio_temp__init (Sts__Device__RadioTemp *message) { - static Sts__Device__RadioTemp init_value = STS__DEVICE__RADIO_TEMP__INIT; + static const Sts__Device__RadioTemp init_value = STS__DEVICE__RADIO_TEMP__INIT; *message = init_value; } void sts__device__thermal__radio_tx_chain_mask__init (Sts__Device__Thermal__RadioTxChainMask *message) { - static Sts__Device__Thermal__RadioTxChainMask init_value = STS__DEVICE__THERMAL__RADIO_TX_CHAIN_MASK__INIT; + static const Sts__Device__Thermal__RadioTxChainMask init_value = STS__DEVICE__THERMAL__RADIO_TX_CHAIN_MASK__INIT; *message = init_value; } void sts__device__thermal__init (Sts__Device__Thermal *message) { - static Sts__Device__Thermal init_value = STS__DEVICE__THERMAL__INIT; + static const Sts__Device__Thermal init_value = STS__DEVICE__THERMAL__INIT; *message = init_value; } void sts__device__mem_util__init (Sts__Device__MemUtil *message) { - static Sts__Device__MemUtil init_value = STS__DEVICE__MEM_UTIL__INIT; + static const Sts__Device__MemUtil init_value = STS__DEVICE__MEM_UTIL__INIT; *message = init_value; } void sts__device__fs_util__init (Sts__Device__FsUtil *message) { - static Sts__Device__FsUtil init_value = STS__DEVICE__FS_UTIL__INIT; + static const Sts__Device__FsUtil init_value = STS__DEVICE__FS_UTIL__INIT; *message = init_value; } void sts__device__cpu_util__init (Sts__Device__CpuUtil *message) { - static Sts__Device__CpuUtil init_value = STS__DEVICE__CPU_UTIL__INIT; + static const Sts__Device__CpuUtil init_value = STS__DEVICE__CPU_UTIL__INIT; *message = init_value; } void sts__device__per_process_util__init (Sts__Device__PerProcessUtil *message) { - static Sts__Device__PerProcessUtil init_value = STS__DEVICE__PER_PROCESS_UTIL__INIT; + static const Sts__Device__PerProcessUtil init_value = STS__DEVICE__PER_PROCESS_UTIL__INIT; *message = init_value; } void sts__device__init (Sts__Device *message) { - static Sts__Device init_value = STS__DEVICE__INIT; + static const Sts__Device init_value = STS__DEVICE__INIT; *message = init_value; } size_t sts__device__get_packed_size @@ -439,25 +425,27 @@ void sts__device__free_unpacked (Sts__Device *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__device__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__bsclient__bsevent__init (Sts__BSClient__BSEvent *message) { - static Sts__BSClient__BSEvent init_value = STS__BSCLIENT__BSEVENT__INIT; + static const Sts__BSClient__BSEvent init_value = STS__BSCLIENT__BSEVENT__INIT; *message = init_value; } void sts__bsclient__bsband_report__init (Sts__BSClient__BSBandReport *message) { - static Sts__BSClient__BSBandReport init_value = STS__BSCLIENT__BSBAND_REPORT__INIT; + static const Sts__BSClient__BSBandReport init_value = STS__BSCLIENT__BSBAND_REPORT__INIT; *message = init_value; } void sts__bsclient__init (Sts__BSClient *message) { - static Sts__BSClient init_value = STS__BSCLIENT__INIT; + static const Sts__BSClient init_value = STS__BSCLIENT__INIT; *message = init_value; } size_t sts__bsclient__get_packed_size @@ -494,13 +482,15 @@ void sts__bsclient__free_unpacked (Sts__BSClient *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__bsclient__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__bsreport__init (Sts__BSReport *message) { - static Sts__BSReport init_value = STS__BSREPORT__INIT; + static const Sts__BSReport init_value = STS__BSREPORT__INIT; *message = init_value; } size_t sts__bsreport__get_packed_size @@ -537,19 +527,21 @@ void sts__bsreport__free_unpacked (Sts__BSReport *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__bsreport__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__rssi_peer__rssi_sample__init (Sts__RssiPeer__RssiSample *message) { - static Sts__RssiPeer__RssiSample init_value = STS__RSSI_PEER__RSSI_SAMPLE__INIT; + static const Sts__RssiPeer__RssiSample init_value = STS__RSSI_PEER__RSSI_SAMPLE__INIT; *message = init_value; } void sts__rssi_peer__init (Sts__RssiPeer *message) { - static Sts__RssiPeer init_value = STS__RSSI_PEER__INIT; + static const Sts__RssiPeer init_value = STS__RSSI_PEER__INIT; *message = init_value; } size_t sts__rssi_peer__get_packed_size @@ -586,13 +578,15 @@ void sts__rssi_peer__free_unpacked (Sts__RssiPeer *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__rssi_peer__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__rssi_report__init (Sts__RssiReport *message) { - static Sts__RssiReport init_value = STS__RSSI_REPORT__INIT; + static const Sts__RssiReport init_value = STS__RSSI_REPORT__INIT; *message = init_value; } size_t sts__rssi_report__get_packed_size @@ -629,13 +623,15 @@ void sts__rssi_report__free_unpacked (Sts__RssiReport *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__rssi_report__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void sts__report__init (Sts__Report *message) { - static Sts__Report init_value = STS__REPORT__INIT; + static const Sts__Report init_value = STS__REPORT__INIT; *message = init_value; } size_t sts__report__get_packed_size @@ -672,6 +668,8 @@ void sts__report__free_unpacked (Sts__Report *message, ProtobufCAllocator *allocator) { + if(!message) + return; assert(message->base.descriptor == &sts__report__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } @@ -1912,7 +1910,7 @@ const ProtobufCMessageDescriptor sts__cl (ProtobufCMessageInit) sts__client_report__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor sts__survey__survey_sample__field_descriptors[10] = +static const ProtobufCFieldDescriptor sts__survey__survey_sample__field_descriptors[11] = { { "channel", @@ -2034,6 +2032,18 @@ static const ProtobufCFieldDescriptor st 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "noise", + 11, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_UINT32, + offsetof(Sts__Survey__SurveySample, has_noise), + offsetof(Sts__Survey__SurveySample, noise), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned sts__survey__survey_sample__field_indices_by_name[] = { 4, /* field[4] = busy */ @@ -2043,6 +2053,7 @@ static const unsigned sts__survey__surve 5, /* field[5] = busy_tx */ 0, /* field[0] = channel */ 1, /* field[1] = duration_ms */ + 10, /* field[10] = noise */ 8, /* field[8] = offset_ms */ 3, /* field[3] = sample_count */ 2, /* field[2] = total_count */ @@ -2050,7 +2061,7 @@ static const unsigned sts__survey__surve static const ProtobufCIntRange sts__survey__survey_sample__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 10 } + { 0, 11 } }; const ProtobufCMessageDescriptor sts__survey__survey_sample__descriptor = { @@ -2060,14 +2071,14 @@ const ProtobufCMessageDescriptor sts__su "Sts__Survey__SurveySample", "sts", sizeof(Sts__Survey__SurveySample), - 10, + 11, sts__survey__survey_sample__field_descriptors, sts__survey__survey_sample__field_indices_by_name, 1, sts__survey__survey_sample__number_ranges, (ProtobufCMessageInit) sts__survey__survey_sample__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor sts__survey__survey_avg__field_descriptors[6] = +static const ProtobufCFieldDescriptor sts__survey__survey_avg__field_descriptors[7] = { { "channel", @@ -2141,6 +2152,18 @@ static const ProtobufCFieldDescriptor st 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "noise", + 7, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(Sts__Survey__SurveyAvg, noise), + &sts__avg_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned sts__survey__survey_avg__field_indices_by_name[] = { 1, /* field[1] = busy */ @@ -2149,11 +2172,12 @@ static const unsigned sts__survey__surve 4, /* field[4] = busy_self */ 2, /* field[2] = busy_tx */ 0, /* field[0] = channel */ + 6, /* field[6] = noise */ }; static const ProtobufCIntRange sts__survey__survey_avg__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 6 } + { 0, 7 } }; const ProtobufCMessageDescriptor sts__survey__survey_avg__descriptor = { @@ -2163,7 +2187,7 @@ const ProtobufCMessageDescriptor sts__su "Sts__Survey__SurveyAvg", "sts", sizeof(Sts__Survey__SurveyAvg), - 6, + 7, sts__survey__survey_avg__field_descriptors, sts__survey__survey_avg__field_indices_by_name, 1, sts__survey__survey_avg__number_ranges, --- a/src/sm/src/sm_survey_report.c +++ b/src/sm/src/sm_survey_report.c @@ -428,6 +428,7 @@ bool sm_survey_report_calculate_average CALC(chan_self); CALC(chan_rx); CALC(chan_busy_ext); + CALC(chan_noise); } #define AVG(_name) do { \ @@ -465,6 +466,7 @@ bool sm_survey_report_calculate_average AVG(chan_self); AVG(chan_rx); AVG(chan_busy_ext); + AVG(chan_noise); ds_dlist_insert_tail(report_list, report_entry); } @@ -519,7 +521,7 @@ bool sm_survey_report_calculate_raw ( memcpy(report_entry, record_entry, sizeof(*report_entry)); LOGD("Sending %s %s %u survey report " - "{busy=%u tx=%u self=%u rx=%u ext=%u duration=%u}", + "{busy=%u tx=%u self=%u rx=%u ext=%u noise=%u duration=%u}", radio_get_name_from_cfg(radio_cfg_ctx), radio_get_scan_name_from_type(scan_type), report_entry->info.chan, @@ -528,6 +530,7 @@ bool sm_survey_report_calculate_raw ( report_entry->chan_self, report_entry->chan_rx, report_entry->chan_busy_ext, + report_entry->chan_noise, report_entry->duration_ms); ds_dlist_insert_tail(report_list, report_entry); @@ -723,7 +726,7 @@ bool sm_survey_update_list_cb ( result_entry); LOGD("Processed %s %s %u survey percent " - "{busy=%u tx=%u self=%u rx=%u ext=%u duration=%u}", + "{busy=%u tx=%u self=%u rx=%u ext=%u noise=%u duration=%u}", radio_get_name_from_cfg(radio_cfg_ctx), radio_get_scan_name_from_type(scan_type), result_entry->info.chan, @@ -732,6 +735,7 @@ bool sm_survey_update_list_cb ( result_entry->chan_self, result_entry->chan_rx, result_entry->chan_busy_ext, + result_entry->chan_noise, result_entry->duration_ms); result_entry->info.timestamp_ms =