示例#1
0
文件: main.c 项目: liyanfeng/WSN
void main(void)
{
    halMcuInit();

    hal_led_init();
    
    hal_uart_init();
    
    //Uart0Init(0, 0); 
    printf("s rssi: d\r\n");
    //Uart0Init(unsigned char StopBits,unsigned char Parity)
    if (FAILED == halRfInit()) {
        HAL_ASSERT(FALSE);
    }

    // Config basicRF
    basicRfConfig.panId = PAN_ID;
    basicRfConfig.channel = RF_CHANNEL;
    basicRfConfig.ackRequest = TRUE;
#ifdef SECURITY_CCM
    basicRfConfig.securityKey = key;
#endif

    
    // Initialize BasicRF
#if NODE_TYPE
    basicRfConfig.myAddr = SEND_ADDR;
#else
    basicRfConfig.myAddr = RECV_ADDR; 
#endif
    
    if(basicRfInit(&basicRfConfig)==FAILED) {
      HAL_ASSERT(FALSE);
    }
    
#if NODE_TYPE
    //uWaveInit();
    dht11_io_init();
    rfSendData();
#else
    rfRecvData();   
#endif
}
示例#2
0
文件: main.c 项目: liyanfeng/WSN2
void main(void)
{
    halMcuInit();

    hal_led_init();
    
    hal_uart_init();
    printf("你知道串口是正常的.....\r\n");
    if (FAILED == halRfInit()) {
        HAL_ASSERT(FALSE);
    }

    // Config basicRF
    basicRfConfig.panId = PAN_ID;
    basicRfConfig.channel = RF_CHANNEL;
    basicRfConfig.ackRequest = TRUE;
#ifdef SECURITY_CCM
    basicRfConfig.securityKey = key;
#endif

    
    // Initialize BasicRF
#if NODE_TYPE
    basicRfConfig.myAddr = SEND_ADDR;
#else
    basicRfConfig.myAddr = RECV_ADDR; 
#endif
    
    if(basicRfInit(&basicRfConfig)==FAILED) {
      HAL_ASSERT(FALSE);
    }
#if NODE_TYPE
    dht11_io_init();
    InitialT1test();
  rfSendData();
#else
  printf("接收数据\r\n");
  rfRecvData();   
#endif
}
示例#3
0
/**
 *  \brief Parse user entered command and process it
 *  
 *  \param [in] Data   User entered command with parameters
 *  \param [in] Length Length of command
 *  \return void
 *  
 */
void ProcessATCommand(char *Data, uint8_t Length)
{
    char *  Parameters    = strchr(Data, ':');
    uint8_t ParametersPos = 0x00;
    if (Parameters == NULL)
    {
        dxprintf("Len: %d, no params\n", Length);
    }
    else
    {
        ParametersPos = Parameters - Data;
        dxprintf("Len: %d, Params: %d\n", Length, ParametersPos);
    }

    int CommandProcessed = 0;

    /**
    *  CMD: PING - ping myself
    */
    if (strncmp(&Data[3], (char *)"PING", 4) == 0)
    {
        CmdPING();
        CommandProcessed = 1;
    }

    /**
    *  CMD: FIND_NEW_DEVICE or FIND - find new device. Device should be able to accept 'discover' command.
    */
    if (strncmp(&Data[3], (char *)"FIND_NEW_DEVICE", 15) == 0 ||
        strncmp(&Data[3], (char *)"FIND", 4) == 0)
    {
        CmdFindNewDevice();
        CommandProcessed = 1;
    }

    /**
    *  CMD: CHECK_TX_STATUS - Check current transmitter status
    */
    if (strncmp(&Data[3], (char *)"CHECK_TX_STATUS", 15) == 0)
    {
        QueueResponse((char *)"<CHECK_TX_STATUS\n");
        CmdCheckTxRxStatus(CHIP_Tx);
        CommandProcessed = 1;
    }

    /**
    *  CMD: CHECK_RX_STATUS - Check current receiver status
    */
    if (strncmp(&Data[3], (char *)"CHECK_RX_STATUS", 15) == 0)
    {
        QueueResponse((char *)"<CHECK_RX_STATUS\n");
        CmdCheckTxRxStatus(CHIP_Rx);
        CommandProcessed = 1;
    }

    /**
    *  CMD: HANDLE_TX_STATUS - Check and handle current transmitter status
    */
    if (strncmp(&Data[3], (char *)"HANDLE_TX_STATUS", 16) == 0)
    {
        QueueResponse((char *)"<HANDLE_TX_STATUS\n");
        CmdHandleTxRxStatus(CHIP_Tx);
        CommandProcessed = 1;
    }

    /**
    *  CMD: HANDLE_RX_STATUS - Check and handle current receiver status
    */
    if (strncmp(&Data[3], (char *)"HANDLE_RX_STATUS", 16) == 0)
    {
        QueueResponse((char *)"<HANDLE_RX_STATUS\n");
        CmdHandleTxRxStatus(CHIP_Rx);
        CommandProcessed = 1;
    }

    /**
    *  CMD: ADD_DEVICE - Add new device into device list. This command doesn't send any data to device.
    */
    if (strncmp(&Data[3], (char *)"ADD_DEVICE", 10) == 0)
    {
        QueueResponse((char *)"<ADD_DEVICE\n");
        rfCreateDevice();
        CommandProcessed = 1;
    }

    /**
    *  CMD: LIST_DEVICES - print loaded devices 
    */
    if (strncmp(&Data[3], (char *)"LIST_DEVICES", 12) == 0)
    {
        QueueResponse((char *)"<LIST_DEVICES\n");
        rfListDevices();
        CommandProcessed = 1;
    }

    /**
    *  CMD: SAVE_DEVICES - save current devices 
    */
    if (strncmp(&Data[3], (char *)"SAVE_DEVICES", 12) == 0)
    {
        QueueResponse((char *)"<SAVE_DEVICES\n");
        rfSaveDevices();
        QueueResponse((char *)"<DONE\n");
        CommandProcessed = 1;
    }

    /**
    *  CMD: LOAD_DEVICES - load saved devices 
    */
    if (strncmp(&Data[3], (char *)"LOAD_DEVICES", 12) == 0)
    {
        QueueResponse((char *)"<LOAD_DEVICES\n");
        rfLoadDevices();
        rfListDevices();
        QueueResponse((char *)"<DONE\n");
        CommandProcessed = 1;
    }

    /**
    *  CMD: PREPARE_TEST_DEVICES - generate list of dummy devices
    */
    if (strncmp(&Data[3], (char *)"PREPARE_TEST_DEVICES", 20) == 0)
    {
        QueueResponse((char *)"<PREPARE_TEST_DEVICES\n");
        rfPrepareTestDevices();
        QueueResponse((char *)"<DONE\n");
        CommandProcessed = 1;
    }

    /**
    *  CMD: PING_DEVICE - ping one device
    */
    if (strncmp(&Data[3], (char *)"PING_DEVICE", 11) == 0)
    {
        QueueResponse((char *)"***PING_DEVICE NOT IMPLEMENTED!!!***");
        CommandProcessed = 1;
    }

    /**
    *  CMD: PING_ALL_DEVICES - ping all loaded devices
    */
    if (strncmp(&Data[3], (char *)"PING_ALL_DEVICES", 16) == 0)
    {
        QueueResponse((char *)"<PING_ALL_DEVICES\n");
        rfPingAllDevices();
        QueueResponse((char *)"<DONE\n");
        CommandProcessed = 1;
    }

    /**
    *  CMD: SELF_TEST - run self tests
    */
    if (strncmp(&Data[3], (char *)"SELF_TEST", 9) == 0)
    {
        QueueResponse((char *)"***SELF_TEST NOT IMPLEMENTED!!!***");
        CommandProcessed = 1;
    }

    /**
    *  CMD: SEND_DATA - send data to given device
    */
    if (strncmp(&Data[3], (char *)"SEND_DATA", 9) == 0)
    {
        QueueResponse((char *)"<SEND_DATA\n");
        char    Parameters[Length - ParametersPos + 1];
        int     DevAddress                             = 0x00;
        uint8_t ArgumentsLength                        = Length - ParametersPos - 6;
        char    Arguments[ArgumentsLength];
        strlcpy(Parameters, &Data[ParametersPos + 1], Length - ParametersPos);

        if (sscanf(Parameters, "%4x:%s", &DevAddress, Arguments) > 0)
        {
            dLink Device = rfGetDevice(DevAddress);
            if (Device == NULL)
            {
                QueueResponse((char *)">ERROR: Device with given address not linked!\n\n");
            }
            else if (Device->Type == 0x00)
            {
                QueueResponse((char *)">ERROR: Device type not valid!\n\n");
            }
            else
            {
                rfSendData(rfCMD_W_DATA, Device, Arguments);
            }
        }
        else
        {
            QueueResponse((char *)">ERROR: Device address not set!\n\n");
        }
        CommandProcessed = 1;
    }

    if (CommandProcessed == 0)
    {
        QueueResponse((char *)">ERROR: Unknown command!\n\n");
    }
}