@@ -917,8 +917,17 @@ static void stateJustJoined (void) {
917
917
LMIC .seqnoDn = LMIC .seqnoUp = 0 ;
918
918
LMIC .rejoinCnt = 0 ;
919
919
LMIC .dnConf = LMIC .adrChanged = LMIC .ladrAns = LMIC .devsAns = 0 ;
920
- LMIC .moreData = LMIC .dn2Ans = LMIC .snchAns = LMIC .dutyCapAns = 0 ;
921
- #if !defined(DISABLE_PING )
920
+ #if !defined(DISABLE_MCMD_SNCH_REQ )
921
+ LMIC .snchAns = 0 ;
922
+ #endif
923
+ #if !defined(DISABLE_MCMD_DN2P_SET )
924
+ LMIC .dn2Ans = 0 ;
925
+ #endif
926
+ LMIC .moreData = 0 ;
927
+ #if !defined(DISABLE_MCMD_DCAP_REQ )
928
+ LMIC .dutyCapAns = 0 ;
929
+ #endif
930
+ #if !defined(DISABLE_MCMD_PING_SET ) && !defined(DISABLE_PING )
922
931
LMIC .pingSetAns = 0 ;
923
932
#endif
924
933
LMIC .upRepeat = 0 ;
@@ -1122,9 +1131,9 @@ static bit_t decodeFrame (void) {
1122
1131
continue ;
1123
1132
}
1124
1133
case MCMD_DN2P_SET : {
1134
+ #if !defined(DISABLE_MCMD_DN2P_SET )
1125
1135
dr_t dr = (dr_t )(opts [oidx + 1 ] & 0x0F );
1126
1136
u4_t freq = convFreq (& opts [oidx + 2 ]);
1127
- oidx += 5 ;
1128
1137
LMIC .dn2Ans = 0x80 ; // answer pending
1129
1138
if ( validDR (dr ) )
1130
1139
LMIC .dn2Ans |= MCMD_DN2P_ANS_DRACK ;
@@ -1136,32 +1145,38 @@ static bit_t decodeFrame (void) {
1136
1145
DO_DEVDB (LMIC .dn2Dr ,dn2Dr );
1137
1146
DO_DEVDB (LMIC .dn2Freq ,dn2Freq );
1138
1147
}
1148
+ #endif // !DISABLE_MCMD_DN2P_SET
1149
+ oidx += 5 ;
1139
1150
continue ;
1140
1151
}
1141
1152
case MCMD_DCAP_REQ : {
1153
+ #if !defined(DISABLE_MCMD_DCAP_REQ )
1142
1154
u1_t cap = opts [oidx + 1 ];
1143
- oidx += 2 ;
1144
1155
// A value cap=0xFF means device is OFF unless enabled again manually.
1145
1156
if ( cap == 0xFF )
1146
1157
LMIC .opmode |= OP_SHUTDOWN ; // stop any sending
1147
1158
LMIC .globalDutyRate = cap & 0xF ;
1148
1159
LMIC .globalDutyAvail = os_getTime ();
1149
1160
DO_DEVDB (cap ,dutyCap );
1150
1161
LMIC .dutyCapAns = 1 ;
1162
+ oidx += 2 ;
1163
+ #endif // !DISABLE_MCMD_DCAP_REQ
1151
1164
continue ;
1152
1165
}
1153
1166
case MCMD_SNCH_REQ : {
1167
+ #if !defined(DISABLE_MCMD_SNCH_REQ )
1154
1168
u1_t chidx = opts [oidx + 1 ]; // channel
1155
1169
u4_t freq = convFreq (& opts [oidx + 2 ]); // freq
1156
1170
u1_t drs = opts [oidx + 5 ]; // datarate span
1157
1171
LMIC .snchAns = 0x80 ;
1158
1172
if ( freq != 0 && LMIC_setupChannel (chidx , freq , DR_RANGE_MAP (drs & 0xF ,drs >>4 ), -1 ) )
1159
1173
LMIC .snchAns |= MCMD_SNCH_ANS_DRACK |MCMD_SNCH_ANS_FQACK ;
1174
+ #endif // !DISABLE_MCMD_SNCH_REQ
1160
1175
oidx += 6 ;
1161
1176
continue ;
1162
1177
}
1163
1178
case MCMD_PING_SET : {
1164
- #if !defined(DISABLE_PING )
1179
+ #if !defined(DISABLE_MCMD_PING_SET ) && !defined( DISABLE_PING )
1165
1180
u4_t freq = convFreq (& opts [oidx + 1 ]);
1166
1181
u1_t flags = 0x80 ;
1167
1182
if ( freq != 0 ) {
@@ -1172,12 +1187,12 @@ static bit_t decodeFrame (void) {
1172
1187
DO_DEVDB (LMIC .ping .dr , pingDr );
1173
1188
}
1174
1189
LMIC .pingSetAns = flags ;
1175
- #endif // !DISABLE_PING
1190
+ #endif // !DISABLE_MCMD_PING_SET && ! DISABLE_PING
1176
1191
oidx += 4 ;
1177
1192
continue ;
1178
1193
}
1179
1194
case MCMD_BCNI_ANS : {
1180
- #if !defined(DISABLE_BEACONS )
1195
+ #if !defined(DISABLE_MCMD_BCNI_ANS ) && !defined( DISABLE_BEACONS )
1181
1196
// Ignore if tracking already enabled
1182
1197
if ( (LMIC .opmode & OP_TRACK ) == 0 ) {
1183
1198
LMIC .bcnChnl = opts [oidx + 3 ];
@@ -1201,7 +1216,7 @@ static bit_t decodeFrame (void) {
1201
1216
- LMIC .bcnRxtime ) << 8 )),
1202
1217
e_ .time = MAIN ::CDEV -> ostime2ustime (LMIC .bcninfo .txtime + BCN_INTV_osticks )));
1203
1218
}
1204
- #endif // !DISABLE_BEACONS
1219
+ #endif // !DISABLE_MCMD_BCNI_ANS && ! DISABLE_BEACONS
1205
1220
oidx += 4 ;
1206
1221
continue ;
1207
1222
}
@@ -1530,17 +1545,21 @@ static void buildDataFrame (void) {
1530
1545
end += 2 ;
1531
1546
}
1532
1547
#endif // !DISABLE_PING
1548
+ #if !defined(DISABLE_MCMD_DCAP_REQ )
1533
1549
if ( LMIC .dutyCapAns ) {
1534
1550
LMIC .frame [end ] = MCMD_DCAP_ANS ;
1535
1551
end += 1 ;
1536
1552
LMIC .dutyCapAns = 0 ;
1537
1553
}
1554
+ #endif // !DISABLE_MCMD_DCAP_REQ
1555
+ #if !defined(DISABLE_MCMD_DN2P_SET )
1538
1556
if ( LMIC .dn2Ans ) {
1539
1557
LMIC .frame [end + 0 ] = MCMD_DN2P_ANS ;
1540
1558
LMIC .frame [end + 1 ] = LMIC .dn2Ans & ~MCMD_DN2P_ANS_RFU ;
1541
1559
end += 2 ;
1542
1560
LMIC .dn2Ans = 0 ;
1543
1561
}
1562
+ #endif // !DISABLE_MCMD_DN2P_SET
1544
1563
if ( LMIC .devsAns ) { // answer to device status
1545
1564
LMIC .frame [end + 0 ] = MCMD_DEVS_ANS ;
1546
1565
LMIC .frame [end + 1 ] = LMIC .margin ;
@@ -1565,20 +1584,22 @@ static void buildDataFrame (void) {
1565
1584
LMIC .adrAckReq = 0 ;
1566
1585
LMIC .adrChanged = 0 ;
1567
1586
}
1568
- #if !defined(DISABLE_PING )
1587
+ #if !defined(DISABLE_MCMD_PING_SET ) && !defined( DISABLE_PING )
1569
1588
if ( LMIC .pingSetAns != 0 ) {
1570
1589
LMIC .frame [end + 0 ] = MCMD_PING_ANS ;
1571
1590
LMIC .frame [end + 1 ] = LMIC .pingSetAns & ~MCMD_PING_ANS_RFU ;
1572
1591
end += 2 ;
1573
1592
LMIC .pingSetAns = 0 ;
1574
1593
}
1575
- #endif // !DISABLE_PING
1594
+ #endif // !DISABLE_MCMD_PING_SET && !DISABLE_PING
1595
+ #if !defined(DISABLE_MCMD_SNCH_REQ )
1576
1596
if ( LMIC .snchAns ) {
1577
1597
LMIC .frame [end + 0 ] = MCMD_SNCH_ANS ;
1578
1598
LMIC .frame [end + 1 ] = LMIC .snchAns & ~MCMD_SNCH_ANS_RFU ;
1579
1599
end += 2 ;
1580
1600
LMIC .snchAns = 0 ;
1581
1601
}
1602
+ #endif // !DISABLE_MCMD_SNCH_REQ
1582
1603
ASSERT (end <= OFF_DAT_OPTS + 16 );
1583
1604
1584
1605
u1_t flen = end + (txdata ? 5 + dlen : 4 );
0 commit comments