📄 starnet.c
字号:
MCPSDataRequest(&gsTxPacket);
u16NewTime = MCUReadTmr1 ();
u16RTXOldTime = u16NewTime;
LedDrive(u8Channel);
while ((u16NewTime-u16RTXOldTime) < DWELLTIME1)
{
u16NewTime = MCUReadTmr1 ();
}
MLMERXEnableRequest(&gsRxPacket, RXTIMEOUT); // Wait for target device response or timeout */
while (gu8RTxMode != IDLE_MODE) // Wait until RX is done */
{
LOW_POWER_WHILE(); // Conserve MCU power */
}
if ((gsRxPacket.u8Status == SUCCESS)) // Good packet received */
{
if ((gauRxDataBuffer[0] == 0xE1) && (gauRxDataBuffer[2] == SECURITY) && (gauRxDataBuffer[3] == u8ED)&&(gauRxDataBuffer[4] == u8Channel)&& (gauRxDataBuffer[7] == numREQ))
{
u8AppStatus=2;
LedDrive(0x09);
}
}
}
while(u8AppStatus==2)
{ u8Dsn++;
if (u8Dsn == 0xFF)
{
u8Dsn = 0x00;
}
for (i=0;i<gsTxPacket.u8DataLength+1;i++)
{
gauTxDataBuffer[i]=gauRxDataBuffer[i];
}
txed= gauRxDataBuffer[1];
gsTxPacket.u8DataLength = 8;
gauTxDataBuffer[4]=delivernum;
gauTxDataBuffer[5]=u8Dsn ;
gauTxDataBuffer[7]=deliverCMD;
gsTxPacket.u8DataLength = 8;
u16NewTime = MCUReadTmr1 ();
u16RTXOldTime = u16NewTime;
while ((u16NewTime-u16RTXOldTime) < DWELLTIME) /* 46mS */
{
u16NewTime = MCUReadTmr1 ();
}
MCPSDataRequest(&gsTxPacket); /* Transmit the packet */
u16NewTime = MCUReadTmr1 ();
u16RTXOldTime = u16NewTime;
while ((u16NewTime-u16RTXOldTime) < DWELLTIME1)
{
u16NewTime = MCUReadTmr1 ();
}
MLMERXEnableRequest(&gsRxPacket,RXTIMEOUT); /* Wait for target device response or timeout */
while (gu8RTxMode != IDLE_MODE) /* Wait until RX is done */
{
LOW_POWER_WHILE(); /* Conserve MCU power */
}
if ((gsRxPacket.u8Status == SUCCESS)) /* Good packet received */
{
if ((gauRxDataBuffer[0] == 0xE1) && (gauRxDataBuffer[1] == txed) && (gauRxDataBuffer[2] == SECURITY) && (gauRxDataBuffer[3] == u8ED)&&(gauRxDataBuffer[4] == delivernum) &&(gauRxDataBuffer[7] == ACKBACK))
{
LedDrive(delivernum); /* All LEDs on */
MCUDelay(LONGFLASHOFF);
MCUDelay(LONGFLASHOFF);
MCUDelay(LONGFLASHOFF);
u8AppStatus = 0;
delivernum++;
if(delivernum==0x10)
delivernum=1;
u8Flag=1;
u8LinkQuality = MLMELinkQuality (); /* Unused but available */
u16OldTime = MCUReadTmr1 ();
u16NewTime = u16OldTime;
while ((u16NewTime-u16OldTime) < 0x3750)
{
u16NewTime = MCUReadTmr1 ();
}
}
/* else
{
u16Count = 0;
while (u16Count < SHORTFLASHCOUNT)
{
u16OldTime = MCUReadTmr1 ();
u16NewTime = u16OldTime;
while ((u16NewTime-u16OldTime) < SHORTFLASHON)
{
u16NewTime = MCUReadTmr1 ();
}
u16OldTime = MCUReadTmr1 ();
u16NewTime = u16OldTime;
while ((u16NewTime-u16OldTime) < SHORTFLASHOFF)
{
u16NewTime = MCUReadTmr1 ();
}
u16Count ++;
}
} */
}
if (u8Flag != 1)
{
u8RetryCount++;
if (u8RetryCount == MAXTRY)
{
u8AppStatus = 0;
/*u16Count = 0;
while (u16Count < SHORTFLASHCOUNT)
{
LedDrive(0x0f);
u16OldTime = MCUReadTmr1 ();
u16NewTime = u16OldTime;
while ((u16NewTime-u16OldTime) < SHORTFLASHON)
{
u16NewTime = MCUReadTmr1 ();
}
LedDrive(0x00);
u16OldTime = MCUReadTmr1 ();
u16NewTime = u16OldTime;
while ((u16NewTime-u16OldTime) < SHORTFLASHOFF)
{
u16NewTime = MCUReadTmr1 ();
}
u16Count ++;
} */
}
else
u8AppStatus = 2;
} //flag!=1
} // app=1
} //for
} //main
/**************************************************************
* Interrupt: MC13192 initiated interrupt handler
* Parameters: none
* Return: none
* Actions: Disables the pushbutton interrupt
**************************************************************/
interrupt void KBD_ISR()
{
/* Disable the PB0 IRQ. Not needed until a new STOP. */
KBI1SC_KBI1E = 0;
KBI1SC_KBACK = 1;
}
/**************************************************************
* Function: LED driver
* Parameters: state. 1-4 is light only that LED.
* 5 is turn all off. 6 is all on.
* Return: none
**************************************************************/
void LedDrive (UINT8 state)
{
switch (state)
{
case 0x00:
LED1 = 1;
LED2 = 1;
LED3 = 1;
LED4 = 1;
break;
case 0x01:
LED1 = 0;
LED2 = 1;
LED3 = 1;
LED4 = 1;
break;
case 0x02:
LED1 = 1;
LED2 = 0;
LED3 = 1;
LED4 = 1;
break;
case 0x03:
LED1 = 0;
LED2 = 0;
LED3 = 1;
LED4 = 1;
break;
case 0x04:
LED1 = 1;
LED2 = 1;
LED3 = 0;
LED4 = 1;
break;
case 0x05:
LED1 = 0;
LED2 = 1;
LED3 = 0;
LED4 = 1;
break;
case 0x06:
LED1 = 1;
LED2 = 0;
LED3 = 0;
LED4 = 1;
break;
case 0x07:
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 1;
break;
case 0x08:
LED1 = 1;
LED2 = 1;
LED3 = 1;
LED4 = 0;
break;
case 0x09:
LED1 = 0;
LED2 = 1;
LED3 = 1;
LED4 = 0;
break;
case 0x0a:
LED1 = 1;
LED2 = 0;
LED3 = 1;
LED4 = 0;
break;
case 0x0b:
LED1 = 0;
LED2 = 0;
LED3 = 1;
LED4 = 0;
break;
case 0x0c:
LED1 = 1;
LED2 = 1;
LED3 = 0;
LED4 = 0;
break;
case 0x0d:
LED1 = 0;
LED2 = 1;
LED3 = 0;
LED4 = 0;
break;
case 0x0e:
LED1 = 1;
LED2 = 0;
LED3 = 0;
LED4 = 0;
break;
case 0x0f:
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
break;
}
return;
}
/**************************************************************
* Function: Received data handler
* Parameters: rx_packet_t
**************************************************************/
void MCPSDataIndication(tRxPacket *gsRxPacket)
/* Just a direct return. Main loop will handle it. */
{
}
/**************************************************************
* Function: MC13192 reset handler
* Parameters: none
**************************************************************/
void MLMEMC13192ResetIndication (void)
/* Not implemented. */
{
}
/**************************************************************
* Function: Read MCU timer.
* Parameters: none
* Return: 16-bit timer value.
**************************************************************/
UINT16 MCUReadTmr1(void)
{
UINT16 w; /* w[0] is MSB, w[1] is LSB */
((UINT8*)&w)[0] = TPM1CNTH; /* MSB */
((UINT8*)&w)[1] = TPM1CNTL; /* LSB */
return w;
}
/**************************************************************
* Function: Delay.
* Parameters: Delay u16Count
* Return: none.
**************************************************************/
void MCUDelay (UINT16 delay_t)
{
UINT16 u16MCUOldTime;
UINT16 u16MCUNewTime;
u16MCUOldTime = MCUReadTmr1();
u16MCUNewTime = u16MCUOldTime;
while ((u16MCUNewTime-u16MCUOldTime) < delay_t)
{
u16MCUNewTime = MCUReadTmr1();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -