Fixed button-sensor for launchpad

This commit is contained in:
Edvard Pettersen 2018-06-20 13:23:24 +02:00
parent d312dd9ebb
commit f3a030b0a4
7 changed files with 42 additions and 34 deletions

View File

@ -47,7 +47,7 @@ endif
# root path. Note that the returned path is encased in angular brackets, <...>, # root path. Note that the returned path is encased in angular brackets, <...>,
# and is therefore extracted with sed. # and is therefore extracted with sed.
SDK_DEVICE_DIR := $(shell echo "DeviceFamily_constructPath(dummy)" \ SDK_DEVICE_DIR := $(shell echo "DeviceFamily_constructPath(dummy)" \
| arm-none-eabi-gcc -x c -E -DDeviceFamily_$(DEVICE_FAMILY) -include $(DEVICE_FAMILY_H) - \ | arm-none-eabi-cpp -x c -E -DDeviceFamily_$(DEVICE_FAMILY) -include $(DEVICE_FAMILY_H) - \
| tail -1 \ | tail -1 \
| sed -E 's:<(.+)/dummy>:\1:') | sed -E 's:<(.+)/dummy>:\1:')

View File

@ -45,18 +45,22 @@
#define BUTTON_SENSOR_H_ #define BUTTON_SENSOR_H_
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Contiki API */ /* Contiki API */
#include <lib/sensors.h> #include "lib/sensors.h"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Board specific button sensors */ /* Board specific button sensors */
#include "button-sensor-arch.h" #include "button-sensor-arch.h"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
#define BUTTON_SENSOR "Button" #define BUTTON_SENSOR "Button"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
#define BUTTON_SENSOR_VALUE_STATE 0 typedef enum {
#define BUTTON_SENSOR_VALUE_DURATION 1 BUTTON_SENSOR_TYPE_STATE,
BUTTON_SENSOR_TYPE_DURATION
} button_sensor_type_t;
#define BUTTON_SENSOR_VALUE_RELEASED 0 typedef enum {
#define BUTTON_SENSOR_VALUE_PRESSED 1 BUTTON_SENSOR_VALUE_RELEASED,
BUTTON_SENSOR_VALUE_PRESSED
} button_sensor_value_t;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
#endif /* BUTTON_SENSOR_H_ */ #endif /* BUTTON_SENSOR_H_ */
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/

View File

@ -59,14 +59,10 @@
* Override button symbols from dev/button-sensor.h, for the examples that * Override button symbols from dev/button-sensor.h, for the examples that
* include it * include it
*/ */
#define button_left_sensor btn1_sensor #define button_sensor button_left_sensor
#define button_right_sensor btn2_sensor #define button_sensor2 button_right_sensor
/** @} */ /** @} */
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Platform-specific define to signify sensor reading failure */
/* TODO: remove */
#define CC26XX_SENSOR_READING_ERROR 0x80000000
/*---------------------------------------------------------------------------*/
/* Include CPU-related configuration */ /* Include CPU-related configuration */
#include "cc13xx-cc26xx-conf.h" #include "cc13xx-cc26xx-conf.h"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/

View File

@ -48,7 +48,6 @@
#include <stdbool.h> #include <stdbool.h>
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
#include "button-sensor.h" #include "button-sensor.h"
#include "button-sensor-arch.h"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* LaunchPad has 2 buttons: BTN1 and BTN2 */ /* LaunchPad has 2 buttons: BTN1 and BTN2 */
/* Map the GPIO defines from the Board file */ /* Map the GPIO defines from the Board file */
@ -96,9 +95,9 @@ button_press_cb(PIN_Handle handle, PIN_Id pin_id)
switch (pin_id) { switch (pin_id) {
case BTN1_PIN: btn_timer = &btn1_timer; case BTN1_PIN: btn_timer = &btn1_timer;
btn_sensor = &btn1_sensor; break; btn_sensor = &button_left_sensor; break;
case BTN2_PIN: btn_timer = &btn2_timer; case BTN2_PIN: btn_timer = &btn2_timer;
btn_sensor = &btn2_sensor; break; btn_sensor = &button_right_sensor; break;
default: return; /* No matching PIN */ default: return; /* No matching PIN */
} }
@ -121,14 +120,18 @@ button_press_cb(PIN_Handle handle, PIN_Id pin_id)
static int static int
button_value(int type, uint8_t pin, BtnTimer *btn_timer) button_value(int type, uint8_t pin, BtnTimer *btn_timer)
{ {
if (type == BUTTON_SENSOR_VALUE_STATE) { switch (type) {
case BUTTON_SENSOR_TYPE_STATE:
return (PIN_getInputValue(pin) == 0) return (PIN_getInputValue(pin) == 0)
? BUTTON_SENSOR_VALUE_PRESSED ? BUTTON_SENSOR_VALUE_PRESSED
: BUTTON_SENSOR_VALUE_RELEASED; : BUTTON_SENSOR_VALUE_RELEASED;
} else if (type == BUTTON_SENSOR_VALUE_DURATION) {
case BUTTON_SENSOR_TYPE_DURATION:
return (int)btn_timer->duration; return (int)btn_timer->duration;
default:
return 0;
} }
return 0;
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
static int static int
@ -212,7 +215,7 @@ btn2_status(int type)
return button_status(type, BTN2_PIN); return button_status(type, BTN2_PIN);
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
SENSORS_SENSOR(btn1_sensor, BUTTON_SENSOR, btn1_value, btn1_config, btn1_status); SENSORS_SENSOR(button_left_sensor, BUTTON_SENSOR, btn1_value, btn1_config, btn1_status);
SENSORS_SENSOR(btn2_sensor, BUTTON_SENSOR, btn2_value, btn2_config, btn2_status); SENSORS_SENSOR(button_right_sensor, BUTTON_SENSOR, btn2_value, btn2_config, btn2_status);
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/** @} */ /** @} */

View File

@ -45,10 +45,10 @@
#define BUTTON_SENSOR_ARCH_H_ #define BUTTON_SENSOR_ARCH_H_
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Contiki API */ /* Contiki API */
#include <lib/sensors.h> #include "lib/sensors.h"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
extern const struct sensors_sensor btn1_sensor; extern const struct sensors_sensor button_left_sensor;
extern const struct sensors_sensor btn2_sensor; extern const struct sensors_sensor button_right_sensor;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
#endif /* BUTTON_SENSOR_ARCH_H_ */ #endif /* BUTTON_SENSOR_ARCH_H_ */
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/

View File

@ -43,8 +43,8 @@
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Exports a global symbol to be used by the sensor API */ /* Exports a global symbol to be used by the sensor API */
SENSORS( SENSORS(
&btn1_sensor, &button_left_sensor,
&btn2_sensor, &button_right_sensor,
NULL NULL
); );
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/

View File

@ -79,7 +79,6 @@
/* Arch driver implementations */ /* Arch driver implementations */
#include "uart0-arch.h" #include "uart0-arch.h"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
//#include "gpio-interrupt.h"
#include "ieee-addr.h" #include "ieee-addr.h"
#include "dev/rf-common.h" #include "dev/rf-common.h"
#include "lib/random.h" #include "lib/random.h"
@ -94,8 +93,11 @@
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
unsigned short g_nodeId = 0; unsigned short g_nodeId = 0;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/** \brief Board specific initialization */ /*
void board_init(void); * Board-specific initialization function.
* This function is defined in the file <BOARD>_fxns.c
*/
extern void Board_initHook(void);
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
static void static void
fade(unsigned char l) fade(unsigned char l)
@ -138,17 +140,20 @@ platform_init_stage_one(void)
{ {
DRIVERLIB_ASSERT_CURR_RELEASE(); DRIVERLIB_ASSERT_CURR_RELEASE();
// TODO: TEMPORARY WHILE DEVELOP. REMOVE
HWREG(CPU_SCS_BASE + CPU_SCS_O_ACTLR) = CPU_SCS_ACTLR_DISDEFWBUF;
// Enable flash cache // Enable flash cache
VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED); VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED);
// Configure round robin arbitration and prefetching // Configure round robin arbitration and prefetching
VIMSConfigure(VIMS_BASE, true, true); VIMSConfigure(VIMS_BASE, true, true);
// Board_initGeneral() will call Power_init() Power_init();
// Board_initGeneral() will call PIN_init(BoardGpioInitTable)
Board_initGeneral(); if (PIN_init(BoardGpioInitTable) != PIN_SUCCESS) {
/* Error with PIN_init */
while (1);
}
/* Perform board-specific initialization */
Board_initHook();
// Contiki drivers init // Contiki drivers init
leds_init(); leds_init();