ngraziano / LMICPP-Arduino

Lmic (LoraWAN-in-C) modified to C++
61 stars 13 forks source link

ABP not building correctly #37

Closed Kevinvincentals closed 8 months ago

Kevinvincentals commented 8 months ago

Error while building your example with ABP: `In file included from src/lmic/lmic.eu868.h:18, from src/lmic.h:2, from src/certificationprotocol.h:4, from src/certificationprotocol.cpp:2: src/lmic/channelList.h: In constructor 'constexpr ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::ChannelList()': src/lmic/channelList.h:73:65: warning: fold-expressions only available with -std=c++17 or -std=gnu++17 (configure(chnl++, defaultChannelFreq, defaultChannelDrMap),...); ^~~ src/lmic/channelList.h:74:3: error: 'constexpr' constructor does not have empty body } ^ src/lmic/channelList.h: In member function 'constexpr void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::disable(uint8_t) const': src/lmic/channelList.h:76:73: error: assignment of read-only location '((const ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>)this)->ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::channelMap' constexpr void disable(uint8_t channel) { channelMap &= ~(1 << channel); } ^ src/lmic/channelList.h: In member function 'constexpr void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::enable(uint8_t) const': src/lmic/channelList.h:80:34: error: assignment of read-only location '((const ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>)this)->ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::channelMap' channelMap |= (1 << channel); ^ src/lmic/channelList.h: In member function 'constexpr void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::configure(uint8_t, uint32_t, uint16_t) const': src/lmic/channelList.h:100:24: error: assignment of read-only location '((const ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>*)this)->ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::channelMap' channelMap |= 1 << channel; ^~~ ** [.pio\build\esp32dev\src\certificationprotocol.cpp.o] Error 1 In file included from src/lmic/lmic.eu433.h:17, from src/lmic/lmic.eu433.cpp:13: src/lmic/channelList.h: In constructor 'constexpr ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::ChannelList()': src/lmic/channelList.h:73:65: warning: fold-expressions only available with -std=c++17 or -std=gnu++17 (configure(chnl++, defaultChannelFreq, defaultChannelDrMap),...); ^~~ src/lmic/channelList.h:74:3: error: 'constexpr' constructor does not have empty body } ^ src/lmic/channelList.h: In member function 'constexpr void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::disable(uint8_t) const': src/lmic/channelList.h:76:73: error: assignment of read-only location '((const ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>)this)->ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::channelMap' constexpr void disable(uint8_t channel) { channelMap &= ~(1 << channel); } ^ src/lmic/channelList.h: In member function 'constexpr void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::enable(uint8_t) const': src/lmic/channelList.h:80:34: error: assignment of read-only location '((const ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>)this)->ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::channelMap' channelMap |= (1 << channel); ^ src/lmic/channelList.h: In member function 'constexpr void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::configure(uint8_t, uint32_t, uint16_t) const': src/lmic/channelList.h:100:24: error: assignment of read-only location '((const ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>)this)->ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::channelMap' channelMap |= 1 << channel; ^~~ src/lmic/channelList.h: In instantiation of 'void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::configure(uint8_t, uint32_t, uint16_t) const [with BandsType = BandSingle<100>; short unsigned int defaultChannelDrMap = 63; unsigned int ...defaultChannelFreq = {433175000, 433375000, 433575000}; uint8_t = unsigned char; uint32_t = unsigned int; uint16_t = short unsigned int]': src/lmic/channelList.h:73:6: required from 'ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::ChannelList() [with BandsType = BandSingle<100>; short unsigned int defaultChannelDrMap = 63; unsigned int ...defaultChannelFreq = {433175000, 433375000, 433575000}]' src/lmic/lmicdynamicchannel.h:310:61: required from 'DYNAMIC_CHANNEL::DynamicRegionalChannelParams<ChannelListType, MaxEIRP, MaxJoinDR, MinJoinDR, dr_table, MaxDr, default_Freq_RX2, default_rps_RX2, maxPowerIndex, limitRX1DrOffset, minFrequency, maxFrequency>::DynamicRegionalChannelParams(LmicRand&) [with ChannelListType = ChannelList<BandSingle<100>, 63, 433175000, 433375000, 433575000>; signed char MaxEIRP = 12; unsigned char MaxJoinDR = 5; unsigned char MinJoinDR = 0; const uint8_t dr_table = (& EU433::constant_table__DR2RPS_CRC); unsigned char MaxDr = 7; unsigned int default_Freq_RX2 = 434665000; unsigned char default_rps_RX2 = 134; unsigned char maxPowerIndex = 5; unsigned char limitRX1DrOffset = 6; unsigned int minFrequency = 433050000; unsigned int maxFrequency = 434665000]' src/lmic/lmic.eu433.cpp:24:83: required from here src/lmic/channelList.h:99:23: error: passing 'const value_type' {aka 'const ChannelDetail'} as 'this' argument discards qualifiers [-fpermissive] channels[channel] = ChannelDetail{newfreq, drmap}; src/lmic/channelList.h:11:8: note: in call to 'ChannelDetail& ChannelDetail::operator=(ChannelDetail&&)' struct ChannelDetail { ^~~~~ src/lmic/channelList.h: In instantiation of 'void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::updateAvailabitility(uint8_t, OsTime, OsDeltaTime) const [with BandsType = BandSingle<100>; short unsigned int defaultChannelDrMap = 63; unsigned int ...defaultChannelFreq = {433175000, 433375000, 433575000}; uint8_t = unsigned char]': src/lmic/lmicdynamicchannel.h:134:5: required from 'void DYNAMIC_CHANNEL::DynamicRegionalChannelParams<ChannelListType, MaxEIRP, MaxJoinDR, MinJoinDR, dr_table, MaxDr, default_Freq_RX2, default_rps_RX2, maxPowerIndex, limitRX1DrOffset, minFrequency, maxFrequency>::updateTxTimes(OsDeltaTime) [with ChannelListType = ChannelList<BandSingle<100>, 63, 433175000, 433375000, 433575000>; signed char MaxEIRP = 12; unsigned char MaxJoinDR = 5; unsigned char MinJoinDR = 0; const uint8_t dr_table = (& EU433::constant_table__DR2RPS_CRC); unsigned char MaxDr = 7; unsigned int default_Freq_RX2 = 434665000; unsigned char default_rps_RX2 = 134; unsigned char maxPowerIndex = 5; unsigned char limitRX1DrOffset = 6; unsigned int minFrequency = 433050000; unsigned int maxFrequency = 434665000]' src/lmic/lmicdynamicchannel.h:133:8: required from here src/lmic/channelList.h:106:5: error: passing 'const BandSingle<100>' as 'this' argument discards qualifiers [-fpermissive] bands.updateBandAvailability(getBand(channel), txbeg, airtime); ^~~~~ In file included from src/lmic/channelList.h:4, from src/lmic/lmic.eu433.h:17, from src/lmic/lmic.eu433.cpp:13: src/lmic/bands.h:31:8: note: in call to 'void BandSingle::updateBandAvailability(uint8_t, OsTime, OsDeltaTime) [with short unsigned int dutyCycle = 100; uint8_t = unsigned char]' void updateBandAvailability(uint8_t, OsTime lastusage, ^~~~~~ In file included from src/lmic/lmic.eu433.h:17, from src/lmic/lmic.eu433.cpp:13: src/lmic/channelList.h: In instantiation of 'void ChannelList<BandsType, defaultChannelDrMap, defaultChannelFreq>::setCheckDutyCycle(bool) const [with BandsType = BandSingle<100>; short unsigned int defaultChannelDrMap = 63; unsigned int ...defaultChannelFreq = {433175000, 433375000, 433575000}]': src/lmic/lmicdynamicchannel.h:314:5: required from 'void DYNAMIC_CHANNEL::DynamicRegionalChannelParams<ChannelListType, MaxEIRP, MaxJoinDR, MinJoinDR, dr_table, MaxDr, default_Freq_RX2, default_rps_RX2, maxPowerIndex, limitRX1DrOffset, minFrequency, maxFrequency>::setRegionalDutyCycleVerification(bool) [with ChannelListType = ChannelList<BandSingle<100>, 63, 433175000, 433375000, 433575000>; signed char MaxEIRP = 12; unsigned char MaxJoinDR = 5; unsigned char MinJoinDR = 0; const uint8_t* dr_table = (& EU433::constant_table__DR2RPS_CRC); unsigned char MaxDr = 7; unsigned int default_Freq_RX2 = 434665000; unsigned char default_rps_RX2 = 134; unsigned char maxPowerIndex = 5; unsigned char limitRX1DrOffset = 6; unsigned int minFrequency = 433050000; unsigned int maxFrequency = 434665000]' src/lmic/lmicdynamicchannel.h:313:8: required from here src/lmic/channelList.h:125:65: error: assignment of member 'ChannelList<BandSingle<100>, 63, 433175000, 433375000, 433575000>::checkDutyCycle' in read-only object constexpr void setCheckDutyCycle(bool check) { checkDutyCycle = check; }


*** [.pio\build\esp32dev\src\lmic\lmic.eu433.cpp.o] Error 1`
ngraziano commented 8 months ago

ABP example should build now