Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <hal_lcd.h>
- #include <hal_led.h>
- #include <hal_joystick.h>
- #include <hal_assert.h>
- #include <hal_board.h>
- #include <hal_int.h>
- #include "hal_mcu.h"
- #include "hal_button.h"
- #include "hal_rf.h"
- #include "util_lcd.h"
- #include "basic_rf.h"
- #include <stdio.h>
- /***********************************************************************************
- * CONSTANTS
- */
- // Application parameters
- #define RF_CHANNEL 25 // 2.4 GHz RF channel
- // BasicRF address definitions
- #define PAN_ID 0x2007
- #define SWITCH_ADDR 0xCAFE
- #define LIGHT_ADDR 0xB00B
- #define APP_PAYLOAD_LENGTH 1
- #define LIGHT_TOGGLE_CMD 0
- // Application states
- #define IDLE 0
- #define SEND_CMD 1
- // Application role
- #define NONE 0
- #define SWITCH 1
- #define LIGHT 2
- #define APP_MODES 2
- /***********************************************************************************
- * LOCAL VARIABLES
- */
- static uint8 pTxData[APP_PAYLOAD_LENGTH];
- static uint8 pRxData[APP_PAYLOAD_LENGTH];
- static basicRfCfg_t basicRfConfig;
- static uint8 state = 0;
- // Mode menu
- static menuItem_t pMenuItems[] =
- {
- #ifdef ASSY_EXP4618_CC2420
- // Using Softbaugh 7-seg display
- " L S ", SWITCH,
- " LIGHT ", LIGHT
- #else
- // SRF04EB and SRF05EB
- "Switch", SWITCH,
- "Light", LIGHT
- #endif
- };
- static menu_t pMenu =
- {
- pMenuItems,
- N_ITEMS(pMenuItems)
- };
- #ifdef SECURITY_CCM
- // Security key
- static uint8 key[]= {
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- };
- #endif
- /***********************************************************************************
- * LOCAL FUNCTIONS
- */
- static void appLight();
- static void appSwitch();
- static uint8 appSelectMode(void);
- /***********************************************************************************
- * @fn appLight
- *
- * @brief Application code for light application. Puts MCU in endless
- * loop waiting for user input from joystick.
- *
- * @param basicRfConfig - file scope variable. Basic RF configuration data
- * pRxData - file scope variable. Pointer to buffer for RX data
- *
- * @return none
- */
- static void appLight()
- {
- /*************************************************by boo
- halLcdWriteLine(HAL_LCD_LINE_1, "Light");
- halLcdWriteLine(HAL_LCD_LINE_2, "Ready");
- */
- #ifdef ASSY_EXP4618_CC2420
- halLcdClearLine(1);
- halLcdWriteSymbol(HAL_LCD_SYMBOL_RX, 1);
- #endif
- // Initialize BasicRF
- basicRfConfig.myAddr = LIGHT_ADDR;
- if(basicRfInit(&basicRfConfig)==FAILED) {
- HAL_ASSERT(FALSE);
- }
- basicRfReceiveOn();
- // Main loop
- while (TRUE) {
- while(!basicRfPacketIsReady());
- if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) {
- if(pRxData[0] == LIGHT_TOGGLE_CMD) {
- halLedToggle(1);
- }
- }
- }
- }
- /**********************************************************************************
- * @fn appSwitch
- *
- * @brief Application code for switch application. Puts MCU in
- * endless loop to wait for commands from from switch
- *
- * @param basicRfConfig - file scope variable. Basic RF configuration data
- * pTxData - file scope variable. Pointer to buffer for TX
- * payload
- * appState - file scope variable. Holds application state
- *
- * @return none
- */
- static void appSwitch()
- {
- /****************************************************************by boo
- halLcdWriteLine(HAL_LCD_LINE_1, "Switch");
- halLcdWriteLine(HAL_LCD_LINE_2, "Joystick Push");
- halLcdWriteLine(HAL_LCD_LINE_3, "Send Command");*/
- #ifdef ASSY_EXP4618_CC2420
- halLcdClearLine(1);
- halLcdWriteSymbol(HAL_LCD_SYMBOL_TX, 1);
- #endif
- // Initialize BasicRF
- basicRfConfig.myAddr = SWITCH_ADDR;
- if(basicRfInit(&basicRfConfig)==FAILED) {
- HAL_ASSERT(FALSE);
- }
- pTxData[0] = LIGHT_TOGGLE_CMD;
- // Keep Receiver off when not needed to save power
- basicRfReceiveOff();
- // Main loop
- while (TRUE) {
- //if( halJoystickPushed() )**********************by boo
- if(halButtonPushed()==HAL_BUTTON_1)//**************by boo
- {
- basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);
- // Put MCU to sleep. It will wake up on joystick interrupt
- halIntOff();
- halMcuSetLowPowerMode(HAL_MCU_LPM_3); // Will turn on global
- // interrupt enable
- halIntOn();
- }
- }
- }
- /***********************************************************************************
- * @fn main
- *
- * @brief This is the main entry of the "Light Switch" application.
- * After the application modes are chosen the switch can
- * send toggle commands to a light device.
- *
- * @param basicRfConfig - file scope variable. Basic RF configuration
- * data
- * appState - file scope variable. Holds application state
- *
- * @return none
- */
- void main(void)
- {
- //uint8 appMode = SWITCH;
- //uint8 appMode = LIGHT;
- // Config basicRF
- basicRfConfig.panId = PAN_ID;
- basicRfConfig.channel = RF_CHANNEL;
- basicRfConfig.ackRequest = TRUE;
- #ifdef SECURITY_CCM
- basicRfConfig.securityKey = key;
- #endif
- // Initalise board peripherals
- halBoardInit();
- // Initalise hal_rf
- if(halRfInit()==FAILED) {
- HAL_ASSERT(FALSE);
- }
- // Indicate that device is powered
- //halLedSet(2); //นุฑีLED2
- halLedSet(1); //นุฑีLED1
- //appSwitch(); //key1 P0_1
- appLight(); //LED1 P1_0
- // Role is undefined. This code should not be reached
- HAL_ASSERT(FALSE);
- }
- /****************************************************************************************
- * @fn appSelectMode
- *
- * @brief Select application mode
- *
- * @param none
- *
- * @return uint8 - Application mode chosen
- */
- static uint8 appSelectMode(void)
- {
- halLcdWriteLine(1, "Device Mode: ");
- return utilMenuSelect(&pMenu);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement