15
15
*/
16
16
#include " NanostackRfPhyMcr20a.h"
17
17
18
- #ifdef MBED_CONF_NANOSTACK_CONFIGURATION
18
+ #if defined( MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI
19
19
20
20
#include " ns_types.h"
21
21
#include " platform/arm_hal_interrupt.h"
@@ -58,7 +58,7 @@ extern "C" {
58
58
#define gXcvrRunState_d gXcvrPwrAutodoze_c
59
59
#if !defined(TARGET_KW24D)
60
60
#define gXcvrLowPowerState_d gXcvrPwrHibernate_c
61
- #else
61
+ #else
62
62
#define gXcvrLowPowerState_d gXcvrPwrAutodoze_c
63
63
#endif
64
64
@@ -530,7 +530,7 @@ static void rf_init(void)
530
530
cIRQSTS1_RXIRQ | \
531
531
cIRQSTS1_TXIRQ | \
532
532
cIRQSTS1_SEQIRQ;
533
-
533
+
534
534
mStatusAndControlRegs [IRQSTS2] = cIRQSTS2_ASM_IRQ | cIRQSTS2_PB_ERR_IRQ | cIRQSTS2_WAKE_IRQ;
535
535
/* Mask and clear all TMR IRQs */
536
536
mStatusAndControlRegs [IRQSTS3] = cIRQSTS3_TMR4MSK | cIRQSTS3_TMR3MSK | cIRQSTS3_TMR2MSK | cIRQSTS3_TMR1MSK | \
@@ -539,7 +539,7 @@ static void rf_init(void)
539
539
MCR20Drv_DirectAccessSPIMultiByteWrite (PHY_CTRL1, &mStatusAndControlRegs [PHY_CTRL1], 5 );
540
540
/* Clear all interrupts */
541
541
MCR20Drv_DirectAccessSPIMultiByteWrite (IRQSTS1, &mStatusAndControlRegs [IRQSTS1], 3 );
542
-
542
+
543
543
/* RX_FRAME_FILTER. Accept FrameVersion 0 and 1 packets, reject all others */
544
544
MCR20Drv_IndirectAccessSPIWrite (RX_FRAME_FILTER, (cRX_FRAME_FLT_FRM_VER | \
545
545
cRX_FRAME_FLT_BEACON_FT | \
@@ -647,7 +647,7 @@ static int8_t rf_start_cca(uint8_t *data_ptr, uint16_t data_length, uint8_t tx_h
647
647
tx_len = data_length + 2 ;
648
648
MCR20Drv_PB_SPIBurstWrite (data_ptr - 1 , data_length + 1 );
649
649
MCR20Drv_PB_SPIByteWrite (0 ,tx_len);
650
-
650
+
651
651
/* Set CCA mode 1 */
652
652
ccaMode = (mStatusAndControlRegs [PHY_CTRL4] >> cPHY_CTRL4_CCATYPE_Shift_c) & cPHY_CTRL4_CCATYPE;
653
653
if ( ccaMode != gCcaCCA_MODE1_c )
@@ -670,7 +670,7 @@ static int8_t rf_start_cca(uint8_t *data_ptr, uint16_t data_length, uint8_t tx_h
670
670
671
671
/* Write XCVR settings */
672
672
MCR20Drv_DirectAccessSPIWrite (PHY_CTRL1, mStatusAndControlRegs [PHY_CTRL1]);
673
-
673
+
674
674
/* Unmask SEQ interrupt */
675
675
mStatusAndControlRegs [PHY_CTRL2] &= ~(cPHY_CTRL2_SEQMSK);
676
676
MCR20Drv_DirectAccessSPIWrite (PHY_CTRL2, mStatusAndControlRegs [PHY_CTRL2]);
@@ -714,7 +714,7 @@ static void rf_start_tx(void)
714
714
715
715
mStatusAndControlRegs [PHY_CTRL1] &= ~(cPHY_CTRL1_XCVSEQ);
716
716
mStatusAndControlRegs [PHY_CTRL1] |= mPhySeqState ;
717
-
717
+
718
718
/* Unmask SEQ interrupt */
719
719
mStatusAndControlRegs [PHY_CTRL2] &= ~(cPHY_CTRL2_SEQMSK);
720
720
@@ -795,7 +795,7 @@ static void rf_handle_rx_end(void)
795
795
uint8_t rf_lqi = MCR20Drv_DirectAccessSPIRead (LQI_VALUE);
796
796
int8_t rf_rssi = 0 ;
797
797
uint8_t len = mStatusAndControlRegs [RX_FRM_LEN] - 2 ;
798
-
798
+
799
799
800
800
/* Start receiver*/
801
801
rf_receive ();
@@ -876,7 +876,7 @@ static void rf_handle_tx_end(void)
876
876
static void rf_handle_cca_ed_done (void )
877
877
{
878
878
/* Check the result of CCA process*/
879
- if ( !(mStatusAndControlRegs [IRQSTS2] & cIRQSTS2_CCA) )
879
+ if ( !(mStatusAndControlRegs [IRQSTS2] & cIRQSTS2_CCA) )
880
880
{
881
881
rf_start_tx ();
882
882
}
@@ -940,7 +940,7 @@ static int8_t rf_enable_antenna_diversity(void)
940
940
phyReg = MCR20Drv_IndirectAccessSPIRead (ANT_PAD_CTRL);
941
941
phyReg |= 0x02 ;
942
942
MCR20Drv_IndirectAccessSPIWrite (ANT_PAD_CTRL, phyReg);
943
-
943
+
944
944
return 0 ;
945
945
}
946
946
@@ -1008,10 +1008,10 @@ static int8_t rf_extension(phy_extension_type_e extension_type, uint8_t *data_pt
1008
1008
{
1009
1009
reg &= ~cSRC_CTRL_ACK_FRM_PND;
1010
1010
}
1011
-
1011
+
1012
1012
MCR20Drv_DirectAccessSPIWrite (SRC_CTRL, reg);
1013
1013
break ;
1014
-
1014
+
1015
1015
}
1016
1016
/* Return frame Auto Ack frame pending status*/
1017
1017
case PHY_EXTENSION_READ_LAST_ACK_PENDING_STATUS: {
@@ -1120,7 +1120,7 @@ static void handle_interrupt(void)
1120
1120
MCR20Drv_DirectAccessSPIMultiByteRead (IRQSTS2, &mStatusAndControlRegs [IRQSTS2], 7 );
1121
1121
1122
1122
xcvseqCopy = mStatusAndControlRegs [PHY_CTRL1] & cPHY_CTRL1_XCVSEQ;
1123
-
1123
+
1124
1124
/* Flter Fail IRQ */
1125
1125
if ( (mStatusAndControlRegs [IRQSTS1] & cIRQSTS1_FILTERFAIL_IRQ) &&
1126
1126
!(mStatusAndControlRegs [PHY_CTRL2] & cPHY_CTRL2_FILTERFAIL_MSK) )
@@ -1139,7 +1139,7 @@ static void handle_interrupt(void)
1139
1139
MCR20Drv_DirectAccessSPIWrite (PHY_CTRL1, mStatusAndControlRegs [PHY_CTRL1]);
1140
1140
}
1141
1141
}
1142
-
1142
+
1143
1143
/* TMR3 IRQ: ACK wait time-out */
1144
1144
if ( (mStatusAndControlRegs [IRQSTS3] & cIRQSTS3_TMR3IRQ) &&
1145
1145
!(mStatusAndControlRegs [IRQSTS3] & cIRQSTS3_TMR3MSK) )
@@ -1156,15 +1156,15 @@ static void handle_interrupt(void)
1156
1156
mStatusAndControlRegs [PHY_CTRL2] |= cPHY_CTRL2_CCAMSK | cPHY_CTRL2_RXMSK | cPHY_CTRL2_TXMSK | cPHY_CTRL2_SEQMSK;
1157
1157
/* Sync settings with XCVR */
1158
1158
MCR20Drv_DirectAccessSPIMultiByteWrite (IRQSTS1, mStatusAndControlRegs , 5 );
1159
-
1159
+
1160
1160
rf_ack_wait_timer_interrupt ();
1161
1161
MCR20Drv_IRQ_Enable ();
1162
1162
return ;
1163
1163
}
1164
1164
}
1165
1165
1166
1166
/* Sequencer interrupt, the autosequence has completed */
1167
- if ( (mStatusAndControlRegs [IRQSTS1] & cIRQSTS1_SEQIRQ) &&
1167
+ if ( (mStatusAndControlRegs [IRQSTS1] & cIRQSTS1_SEQIRQ) &&
1168
1168
!(mStatusAndControlRegs [PHY_CTRL2] & cPHY_CTRL2_SEQMSK) )
1169
1169
{
1170
1170
/* Set XCVR to Idle */
@@ -1174,7 +1174,7 @@ static void handle_interrupt(void)
1174
1174
mStatusAndControlRegs [PHY_CTRL2] |= cPHY_CTRL2_CCAMSK | cPHY_CTRL2_RXMSK | cPHY_CTRL2_TXMSK | cPHY_CTRL2_SEQMSK;
1175
1175
/* Sync settings with XCVR */
1176
1176
MCR20Drv_DirectAccessSPIMultiByteWrite (IRQSTS1, mStatusAndControlRegs , 5 );
1177
-
1177
+
1178
1178
/* PLL unlock, the autosequence has been aborted due to PLL unlock */
1179
1179
if ( mStatusAndControlRegs [IRQSTS1] & cIRQSTS1_PLL_UNLOCK_IRQ )
1180
1180
{
@@ -1204,7 +1204,7 @@ static void handle_interrupt(void)
1204
1204
default :
1205
1205
break ;
1206
1206
}
1207
-
1207
+
1208
1208
MCR20Drv_IRQ_Enable ();
1209
1209
return ;
1210
1210
}
@@ -1228,7 +1228,7 @@ static void rf_abort(void)
1228
1228
mPhySeqState = gIdle_c ;
1229
1229
1230
1230
mStatusAndControlRegs [IRQSTS1] = MCR20Drv_DirectAccessSPIMultiByteRead (IRQSTS2, &mStatusAndControlRegs [IRQSTS2], 5 );
1231
-
1231
+
1232
1232
/* Mask SEQ interrupt */
1233
1233
mStatusAndControlRegs [PHY_CTRL2] |= cPHY_CTRL2_SEQMSK;
1234
1234
MCR20Drv_DirectAccessSPIWrite (PHY_CTRL2, mStatusAndControlRegs [PHY_CTRL2]);
@@ -1238,7 +1238,7 @@ static void rf_abort(void)
1238
1238
/* Abort current SEQ */
1239
1239
mStatusAndControlRegs [PHY_CTRL1] &= ~(cPHY_CTRL1_XCVSEQ);
1240
1240
MCR20Drv_DirectAccessSPIWrite (PHY_CTRL1, mStatusAndControlRegs [PHY_CTRL1]);
1241
-
1241
+
1242
1242
/* Wait for Sequence Idle (if not already) */
1243
1243
while ((MCR20Drv_DirectAccessSPIRead (SEQ_STATE) & 0x1F ) != 0 );
1244
1244
// while ( !(MCR20Drv_DirectAccessSPIRead(IRQSTS1) & cIRQSTS1_SEQIRQ));
@@ -1287,32 +1287,32 @@ static void rf_get_timestamp(uint32_t *pRetClk)
1287
1287
static void rf_set_timeout (uint32_t *pEndTime)
1288
1288
{
1289
1289
uint8_t phyReg;
1290
-
1290
+
1291
1291
if (NULL == pEndTime)
1292
1292
{
1293
1293
return ;
1294
1294
}
1295
-
1295
+
1296
1296
platform_enter_critical ();
1297
-
1297
+
1298
1298
phyReg = MCR20Drv_DirectAccessSPIRead (IRQSTS3);
1299
1299
phyReg &= 0xF0 ; /* do not change IRQ status */
1300
1300
phyReg |= (cIRQSTS3_TMR3MSK); /* mask TMR3 interrupt */
1301
1301
MCR20Drv_DirectAccessSPIWrite (IRQSTS3, phyReg);
1302
-
1302
+
1303
1303
MCR20Drv_DirectAccessSPIMultiByteWrite (T3CMP_LSB, (uint8_t *) pEndTime, 3 );
1304
-
1304
+
1305
1305
phyReg &= ~(cIRQSTS3_TMR3MSK); /* unmask TMR3 interrupt */
1306
1306
phyReg |= (cIRQSTS3_TMR3IRQ); /* aknowledge TMR3 IRQ */
1307
1307
MCR20Drv_DirectAccessSPIWrite (IRQSTS3, phyReg);
1308
-
1308
+
1309
1309
platform_exit_critical ();
1310
1310
}
1311
1311
1312
1312
/*
1313
1313
* \brief Function reads a random number from RF.
1314
1314
*
1315
- * \param none
1315
+ * \param none
1316
1316
*
1317
1317
* \return 8-bit random number
1318
1318
*/
@@ -1342,7 +1342,7 @@ static uint8_t rf_if_read_rnd(void)
1342
1342
/*
1343
1343
* \brief Function converts LQI into RSSI.
1344
1344
*
1345
- * \param LQI
1345
+ * \param LQI
1346
1346
*
1347
1347
* \return RSSI
1348
1348
*/
@@ -1441,7 +1441,7 @@ static void rf_set_power_state(xcvrPwrMode_t newState)
1441
1441
/* Read power settings from RF */
1442
1442
pwrMode = MCR20Drv_DirectAccessSPIRead (PWR_MODES);
1443
1443
xtalState = pwrMode & cPWR_MODES_XTALEN;
1444
-
1444
+
1445
1445
switch ( newState )
1446
1446
{
1447
1447
case gXcvrPwrIdle_c :
@@ -1461,10 +1461,10 @@ static void rf_set_power_state(xcvrPwrMode_t newState)
1461
1461
default :
1462
1462
return ;
1463
1463
}
1464
-
1464
+
1465
1465
mPwrState = newState;
1466
1466
MCR20Drv_DirectAccessSPIWrite (PWR_MODES, pwrMode);
1467
-
1467
+
1468
1468
if ( !xtalState && (pwrMode & cPWR_MODES_XTALEN))
1469
1469
{
1470
1470
/* wait for crystal oscillator to complet its warmup */
@@ -1504,7 +1504,7 @@ static uint8_t rf_get_channel_energy(void)
1504
1504
mStatusAndControlRegs [PHY_CTRL4] |= gCcaED_c << cPHY_CTRL4_CCATYPE_Shift_c;
1505
1505
MCR20Drv_DirectAccessSPIWrite (PHY_CTRL4, mStatusAndControlRegs [PHY_CTRL4]);
1506
1506
}
1507
-
1507
+
1508
1508
/* Start ED sequence */
1509
1509
mStatusAndControlRegs [PHY_CTRL1] |= gCCA_c ;
1510
1510
MCR20Drv_DirectAccessSPIWrite (IRQSTS1, cIRQSTS1_CCAIRQ | cIRQSTS1_SEQIRQ);
@@ -1515,9 +1515,9 @@ static uint8_t rf_get_channel_energy(void)
1515
1515
mStatusAndControlRegs [PHY_CTRL1] &= ~(cPHY_CTRL1_XCVSEQ);
1516
1516
MCR20Drv_DirectAccessSPIWrite (PHY_CTRL1, mStatusAndControlRegs [PHY_CTRL1]);
1517
1517
MCR20Drv_DirectAccessSPIWrite (IRQSTS1, cIRQSTS1_CCAIRQ | cIRQSTS1_SEQIRQ);
1518
-
1518
+
1519
1519
MCR20Drv_IRQ_Enable ();
1520
-
1520
+
1521
1521
return rf_convert_energy_level (MCR20Drv_DirectAccessSPIRead (CCA1_ED_FNL));
1522
1522
}
1523
1523
0 commit comments