Add support for the CC2650 LaunchPad
This commit is contained in:
parent
5eb0470ad4
commit
387bb96ca4
6
platform/srf06-cc26xx/launchpad/Makefile.launchpad
Normal file
6
platform/srf06-cc26xx/launchpad/Makefile.launchpad
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
CFLAGS += -DBOARD_LAUNCHPAD=1
|
||||||
|
|
||||||
|
CONTIKI_TARGET_DIRS += launchpad common
|
||||||
|
|
||||||
|
BOARD_SOURCEFILES += board.c launchpad-sensors.c leds-arch.c button-sensor.c
|
||||||
|
BOARD_SOURCEFILES += ext-flash.c board-spi.c
|
56
platform/srf06-cc26xx/launchpad/board-peripherals.h
Normal file
56
platform/srf06-cc26xx/launchpad/board-peripherals.h
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** \addtogroup cc26xx-srf-tag
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \defgroup launchpad-peripherals LaunchPad peripherals
|
||||||
|
*
|
||||||
|
* Defines related to LaunchPad peripherals.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \file
|
||||||
|
* Header file with definitions related to LaunchPad peripherals
|
||||||
|
*
|
||||||
|
* \note Do not include this file directly.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef BOARD_PERIPHERALS_H_
|
||||||
|
#define BOARD_PERIPHERALS_H_
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include "ext-flash.h"
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#endif /* BOARD_PERIPHERALS_H_ */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @}
|
||||||
|
*/
|
115
platform/srf06-cc26xx/launchpad/board.c
Normal file
115
platform/srf06-cc26xx/launchpad/board.c
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \addtogroup launchpad-peripherals
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \file
|
||||||
|
* LaunchPad-specific board initialisation driver
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include "contiki-conf.h"
|
||||||
|
#include "lib/sensors.h"
|
||||||
|
#include "lpm.h"
|
||||||
|
#include "ti-lib.h"
|
||||||
|
#include "board-peripherals.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
wakeup_handler(void)
|
||||||
|
{
|
||||||
|
/* Turn on the PERIPH PD */
|
||||||
|
ti_lib_prcm_power_domain_on(PRCM_DOMAIN_PERIPH);
|
||||||
|
while((ti_lib_prcm_power_domain_status(PRCM_DOMAIN_PERIPH)
|
||||||
|
!= PRCM_DOMAIN_POWER_ON));
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
* Declare a data structure to register with LPM.
|
||||||
|
* We don't care about what power mode we'll drop to, we don't care about
|
||||||
|
* getting notified before deep sleep. All we need is to be notified when we
|
||||||
|
* wake up so we can turn power domains back on
|
||||||
|
*/
|
||||||
|
LPM_MODULE(launchpad_module, NULL, NULL, wakeup_handler, LPM_DOMAIN_NONE);
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
configure_unused_pins(void)
|
||||||
|
{
|
||||||
|
uint32_t pins[] = {
|
||||||
|
BOARD_IOID_CS, BOARD_IOID_TDO, BOARD_IOID_TDI, BOARD_IOID_DIO12,
|
||||||
|
BOARD_IOID_DIO15, BOARD_IOID_DIO21, BOARD_IOID_DIO22, BOARD_IOID_DIO23,
|
||||||
|
BOARD_IOID_DIO24, BOARD_IOID_DIO25, BOARD_IOID_DIO26, BOARD_IOID_DIO27,
|
||||||
|
BOARD_IOID_DIO28, BOARD_IOID_DIO29, BOARD_IOID_DIO30,
|
||||||
|
IOID_UNUSED
|
||||||
|
};
|
||||||
|
|
||||||
|
uint32_t *pin;
|
||||||
|
|
||||||
|
for(pin = pins; *pin != IOID_UNUSED; pin++) {
|
||||||
|
ti_lib_ioc_pin_type_gpio_input(*pin);
|
||||||
|
ti_lib_ioc_io_port_pull_set(*pin, IOC_IOPULL_DOWN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
board_init()
|
||||||
|
{
|
||||||
|
/* Disable global interrupts */
|
||||||
|
bool int_disabled = ti_lib_int_master_disable();
|
||||||
|
|
||||||
|
/* Turn on relevant PDs */
|
||||||
|
wakeup_handler();
|
||||||
|
|
||||||
|
/* Enable GPIO peripheral */
|
||||||
|
ti_lib_prcm_peripheral_run_enable(PRCM_PERIPH_GPIO);
|
||||||
|
|
||||||
|
/* Apply settings and wait for them to take effect */
|
||||||
|
ti_lib_prcm_load_set();
|
||||||
|
while(!ti_lib_prcm_load_get());
|
||||||
|
|
||||||
|
/* Make sure the external flash is in the lower power mode */
|
||||||
|
ext_flash_init();
|
||||||
|
|
||||||
|
lpm_register_module(&launchpad_module);
|
||||||
|
|
||||||
|
/* For unsupported peripherals, select a default pin configuration */
|
||||||
|
configure_unused_pins();
|
||||||
|
|
||||||
|
/* Re-enable interrupt if initially enabled. */
|
||||||
|
if(!int_disabled) {
|
||||||
|
ti_lib_int_master_enable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** @} */
|
218
platform/srf06-cc26xx/launchpad/button-sensor.c
Normal file
218
platform/srf06-cc26xx/launchpad/button-sensor.c
Normal file
|
@ -0,0 +1,218 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \addtogroup launchpad-button-sensor
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \file
|
||||||
|
* Driver for LaunchPad buttons
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include "contiki.h"
|
||||||
|
#include "lib/sensors.h"
|
||||||
|
#include "launchpad/button-sensor.h"
|
||||||
|
#include "gpio-interrupt.h"
|
||||||
|
#include "sys/timer.h"
|
||||||
|
#include "lpm.h"
|
||||||
|
|
||||||
|
#include "ti-lib.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#ifdef BUTTON_SENSOR_CONF_ENABLE_SHUTDOWN
|
||||||
|
#define BUTTON_SENSOR_ENABLE_SHUTDOWN BUTTON_SENSOR_CONF_ENABLE_SHUTDOWN
|
||||||
|
#else
|
||||||
|
#define BUTTON_SENSOR_ENABLE_SHUTDOWN 1
|
||||||
|
#endif
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#define BUTTON_GPIO_CFG (IOC_CURRENT_2MA | IOC_STRENGTH_AUTO | \
|
||||||
|
IOC_IOPULL_UP | IOC_SLEW_DISABLE | \
|
||||||
|
IOC_HYST_DISABLE | IOC_BOTH_EDGES | \
|
||||||
|
IOC_INT_ENABLE | IOC_IOMODE_NORMAL | \
|
||||||
|
IOC_NO_WAKE_UP | IOC_INPUT_ENABLE)
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#define DEBOUNCE_DURATION (CLOCK_SECOND >> 5)
|
||||||
|
|
||||||
|
struct btn_timer {
|
||||||
|
struct timer debounce;
|
||||||
|
clock_time_t start;
|
||||||
|
clock_time_t duration;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct btn_timer left_timer, right_timer;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
button_press_handler(uint8_t ioid)
|
||||||
|
{
|
||||||
|
if(ioid == BOARD_IOID_KEY_LEFT) {
|
||||||
|
if(!timer_expired(&left_timer.debounce)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
timer_set(&left_timer.debounce, DEBOUNCE_DURATION);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Start press duration counter on press (falling), notify on release
|
||||||
|
* (rising)
|
||||||
|
*/
|
||||||
|
if(ti_lib_gpio_pin_read(BOARD_KEY_LEFT) == 0) {
|
||||||
|
left_timer.start = clock_time();
|
||||||
|
left_timer.duration = 0;
|
||||||
|
} else {
|
||||||
|
left_timer.duration = clock_time() - left_timer.start;
|
||||||
|
sensors_changed(&button_left_sensor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ioid == BOARD_IOID_KEY_RIGHT) {
|
||||||
|
if(BUTTON_SENSOR_ENABLE_SHUTDOWN == 0) {
|
||||||
|
if(!timer_expired(&right_timer.debounce)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
timer_set(&right_timer.debounce, DEBOUNCE_DURATION);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Start press duration counter on press (falling), notify on release
|
||||||
|
* (rising)
|
||||||
|
*/
|
||||||
|
if(ti_lib_gpio_pin_read(BOARD_KEY_RIGHT) == 0) {
|
||||||
|
right_timer.start = clock_time();
|
||||||
|
right_timer.duration = 0;
|
||||||
|
} else {
|
||||||
|
right_timer.duration = clock_time() - right_timer.start;
|
||||||
|
sensors_changed(&button_right_sensor);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lpm_shutdown(BOARD_IOID_KEY_RIGHT, IOC_IOPULL_UP, IOC_WAKE_ON_LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
config_buttons(int type, int c, uint32_t key)
|
||||||
|
{
|
||||||
|
switch(type) {
|
||||||
|
case SENSORS_HW_INIT:
|
||||||
|
ti_lib_gpio_event_clear(1 << key);
|
||||||
|
ti_lib_ioc_port_configure_set(key, IOC_PORT_GPIO, BUTTON_GPIO_CFG);
|
||||||
|
ti_lib_gpio_dir_mode_set((1 << key), GPIO_DIR_MODE_IN);
|
||||||
|
gpio_interrupt_register_handler(key, button_press_handler);
|
||||||
|
break;
|
||||||
|
case SENSORS_ACTIVE:
|
||||||
|
if(c) {
|
||||||
|
ti_lib_gpio_event_clear(1 << key);
|
||||||
|
ti_lib_ioc_port_configure_set(key, IOC_PORT_GPIO, BUTTON_GPIO_CFG);
|
||||||
|
ti_lib_gpio_dir_mode_set((1 << key), GPIO_DIR_MODE_IN);
|
||||||
|
ti_lib_ioc_int_enable(key);
|
||||||
|
} else {
|
||||||
|
ti_lib_ioc_int_disable(key);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int
|
||||||
|
config_left(int type, int value)
|
||||||
|
{
|
||||||
|
config_buttons(type, value, BOARD_IOID_KEY_LEFT);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int
|
||||||
|
config_right(int type, int value)
|
||||||
|
{
|
||||||
|
config_buttons(type, value, BOARD_IOID_KEY_RIGHT);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int
|
||||||
|
status(int type, uint32_t key_io_id)
|
||||||
|
{
|
||||||
|
switch(type) {
|
||||||
|
case SENSORS_ACTIVE:
|
||||||
|
case SENSORS_READY:
|
||||||
|
if(ti_lib_ioc_port_configure_get(key_io_id) & IOC_INT_ENABLE) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int
|
||||||
|
value_left(int type)
|
||||||
|
{
|
||||||
|
if(type == BUTTON_SENSOR_VALUE_STATE) {
|
||||||
|
return ti_lib_gpio_pin_read(BOARD_KEY_LEFT) == 0 ?
|
||||||
|
BUTTON_SENSOR_VALUE_PRESSED : BUTTON_SENSOR_VALUE_RELEASED;
|
||||||
|
} else if(type == BUTTON_SENSOR_VALUE_DURATION) {
|
||||||
|
return (int)left_timer.duration;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int
|
||||||
|
value_right(int type)
|
||||||
|
{
|
||||||
|
if(type == BUTTON_SENSOR_VALUE_STATE) {
|
||||||
|
return ti_lib_gpio_pin_read(BOARD_KEY_RIGHT) == 0 ?
|
||||||
|
BUTTON_SENSOR_VALUE_PRESSED : BUTTON_SENSOR_VALUE_RELEASED;
|
||||||
|
} else if(type == BUTTON_SENSOR_VALUE_DURATION) {
|
||||||
|
return (int)right_timer.duration;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int
|
||||||
|
status_left(int type)
|
||||||
|
{
|
||||||
|
return status(type, BOARD_IOID_KEY_LEFT);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int
|
||||||
|
status_right(int type)
|
||||||
|
{
|
||||||
|
return status(type, BOARD_IOID_KEY_RIGHT);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
SENSORS_SENSOR(button_left_sensor, BUTTON_SENSOR, value_left, config_left,
|
||||||
|
status_left);
|
||||||
|
SENSORS_SENSOR(button_right_sensor, BUTTON_SENSOR, value_right, config_right,
|
||||||
|
status_right);
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** @} */
|
65
platform/srf06-cc26xx/launchpad/button-sensor.h
Normal file
65
platform/srf06-cc26xx/launchpad/button-sensor.h
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \addtogroup launchpad-peripherals
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \defgroup launchpad-button-sensor LaunchPad Button Driver
|
||||||
|
*
|
||||||
|
* One of the buttons can be configured as general purpose or as an on/off key
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \file
|
||||||
|
* Header file for the LaunchPad Button Driver
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef BUTTON_SENSOR_H_
|
||||||
|
#define BUTTON_SENSOR_H_
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include "lib/sensors.h"
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#define BUTTON_SENSOR "Button"
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#define BUTTON_SENSOR_VALUE_STATE 0
|
||||||
|
#define BUTTON_SENSOR_VALUE_DURATION 1
|
||||||
|
|
||||||
|
#define BUTTON_SENSOR_VALUE_RELEASED 0
|
||||||
|
#define BUTTON_SENSOR_VALUE_PRESSED 1
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
extern const struct sensors_sensor button_left_sensor;
|
||||||
|
extern const struct sensors_sensor button_right_sensor;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#endif /* BUTTON_SENSOR_H_ */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @}
|
||||||
|
*/
|
8
platform/srf06-cc26xx/launchpad/cc2650/Makefile.cc2650
Normal file
8
platform/srf06-cc26xx/launchpad/cc2650/Makefile.cc2650
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
### Will allow the inclusion of the correct CPU makefile
|
||||||
|
CPU_FAMILY = cc26xx
|
||||||
|
|
||||||
|
### Add to the source dirs
|
||||||
|
CONTIKI_TARGET_DIRS += launchpad/cc2650
|
||||||
|
|
||||||
|
### Include the common launchpad makefile
|
||||||
|
include $(PLATFORM_ROOT_DIR)/launchpad/Makefile.launchpad
|
189
platform/srf06-cc26xx/launchpad/cc2650/board.h
Normal file
189
platform/srf06-cc26xx/launchpad/cc2650/board.h
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** \addtogroup launchpad-peripherals
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \defgroup launchpad-cc26xx-specific CC2650 LaunchPad Peripherals
|
||||||
|
*
|
||||||
|
* Defines related to the CC2650 LaunchPad
|
||||||
|
*
|
||||||
|
* This file provides connectivity information on LEDs, Buttons, UART and
|
||||||
|
* other peripherals
|
||||||
|
*
|
||||||
|
* This file is not meant to be modified by the user.
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \file
|
||||||
|
* Header file with definitions related to the I/O connections on the TI
|
||||||
|
* CC2650 LaunchPad
|
||||||
|
*
|
||||||
|
* \note Do not include this file directly. It gets included by contiki-conf
|
||||||
|
* after all relevant directives have been set.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#ifndef BOARD_H_
|
||||||
|
#define BOARD_H_
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include "ioc.h"
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \name LED configurations
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/* Some files include leds.h before us, so we need to get rid of defaults in
|
||||||
|
* leds.h before we provide correct definitions */
|
||||||
|
#undef LEDS_GREEN
|
||||||
|
#undef LEDS_YELLOW
|
||||||
|
#undef LEDS_RED
|
||||||
|
#undef LEDS_CONF_ALL
|
||||||
|
|
||||||
|
#define LEDS_RED 1
|
||||||
|
#define LEDS_GREEN 2
|
||||||
|
#define LEDS_YELLOW LEDS_GREEN
|
||||||
|
#define LEDS_ORANGE LEDS_RED
|
||||||
|
|
||||||
|
#define LEDS_CONF_ALL 3
|
||||||
|
|
||||||
|
/* Notify various examples that we have LEDs */
|
||||||
|
#define PLATFORM_HAS_LEDS 1
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \name LED IOID mappings
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_IOID_LED_1 IOID_6
|
||||||
|
#define BOARD_IOID_LED_2 IOID_7
|
||||||
|
#define BOARD_LED_1 (1 << BOARD_IOID_LED_1)
|
||||||
|
#define BOARD_LED_2 (1 << BOARD_IOID_LED_2)
|
||||||
|
#define BOARD_LED_ALL (BOARD_LED_1 | BOARD_LED_2)
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \name UART IOID mapping
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_IOID_UART_RX IOID_2
|
||||||
|
#define BOARD_IOID_UART_TX IOID_3
|
||||||
|
#define BOARD_IOID_UART_RTS IOID_18
|
||||||
|
#define BOARD_IOID_UART_CTS IOID_19
|
||||||
|
#define BOARD_UART_RX (1 << BOARD_IOID_UART_RX)
|
||||||
|
#define BOARD_UART_TX (1 << BOARD_IOID_UART_TX)
|
||||||
|
#define BOARD_UART_RTS (1 << BOARD_IOID_UART_RTS)
|
||||||
|
#define BOARD_UART_CTS (1 << BOARD_IOID_UART_CTS)
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \name Button IOID mapping
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_IOID_KEY_LEFT IOID_13
|
||||||
|
#define BOARD_IOID_KEY_RIGHT IOID_14
|
||||||
|
#define BOARD_KEY_LEFT (1 << BOARD_IOID_KEY_LEFT)
|
||||||
|
#define BOARD_KEY_RIGHT (1 << BOARD_IOID_KEY_RIGHT)
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \brief SPI IOID mappings
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_IOID_SPI_MOSI IOID_9
|
||||||
|
#define BOARD_IOID_SPI_MISO IOID_8
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \name External flash IOID mapping
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_IOID_FLASH_CS IOID_20
|
||||||
|
#define BOARD_FLASH_CS (1 << BOARD_IOID_FLASH_CS)
|
||||||
|
#define BOARD_IOID_SPI_CLK_FLASH IOID_10
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \brief I2C IOID mappings
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_IOID_SCL IOID_4
|
||||||
|
#define BOARD_IOID_SDA IOID_5
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \brief Remaining pins
|
||||||
|
*
|
||||||
|
* Those values are not meant to be modified by the user
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_IOID_CS IOID_11
|
||||||
|
#define BOARD_IOID_TDO IOID_16
|
||||||
|
#define BOARD_IOID_TDI IOID_17
|
||||||
|
#define BOARD_IOID_DIO12 IOID_12
|
||||||
|
#define BOARD_IOID_DIO15 IOID_15
|
||||||
|
#define BOARD_IOID_DIO21 IOID_21
|
||||||
|
#define BOARD_IOID_DIO22 IOID_22
|
||||||
|
#define BOARD_IOID_DIO23 IOID_23
|
||||||
|
#define BOARD_IOID_DIO24 IOID_24
|
||||||
|
#define BOARD_IOID_DIO25 IOID_25
|
||||||
|
#define BOARD_IOID_DIO26 IOID_26
|
||||||
|
#define BOARD_IOID_DIO27 IOID_27
|
||||||
|
#define BOARD_IOID_DIO28 IOID_28
|
||||||
|
#define BOARD_IOID_DIO29 IOID_29
|
||||||
|
#define BOARD_IOID_DIO30 IOID_30
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \name Device string used on startup
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define BOARD_STRING "TI CC2650 LaunchPad"
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#endif /* BOARD_H_ */
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @}
|
||||||
|
*/
|
47
platform/srf06-cc26xx/launchpad/launchpad-sensors.c
Normal file
47
platform/srf06-cc26xx/launchpad/launchpad-sensors.c
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \addtogroup launchpad-peripherals
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \file
|
||||||
|
* Generic module controlling LaunchPad sensors
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include "contiki.h"
|
||||||
|
#include "launchpad/button-sensor.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** \brief Exports a global symbol to be used by the sensor API */
|
||||||
|
SENSORS(&button_left_sensor, &button_right_sensor);
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** @} */
|
81
platform/srf06-cc26xx/launchpad/leds-arch.c
Normal file
81
platform/srf06-cc26xx/launchpad/leds-arch.c
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* \addtogroup launchpad-peripherals
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* \file
|
||||||
|
* Driver for LaunchPad LEDs
|
||||||
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include "contiki.h"
|
||||||
|
#include "dev/leds.h"
|
||||||
|
|
||||||
|
#include "ti-lib.h"
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static unsigned char c;
|
||||||
|
static int inited = 0;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
leds_arch_init(void)
|
||||||
|
{
|
||||||
|
if(inited) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
inited = 1;
|
||||||
|
|
||||||
|
ti_lib_rom_ioc_pin_type_gpio_output(BOARD_IOID_LED_1);
|
||||||
|
ti_lib_rom_ioc_pin_type_gpio_output(BOARD_IOID_LED_2);
|
||||||
|
|
||||||
|
ti_lib_gpio_pin_write(BOARD_LED_ALL, 0);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
unsigned char
|
||||||
|
leds_arch_get(void)
|
||||||
|
{
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
leds_arch_set(unsigned char leds)
|
||||||
|
{
|
||||||
|
c = leds;
|
||||||
|
ti_lib_gpio_pin_write(BOARD_LED_ALL, 0);
|
||||||
|
|
||||||
|
if((leds & LEDS_RED) == LEDS_RED) {
|
||||||
|
ti_lib_gpio_pin_write(BOARD_LED_1, 1);
|
||||||
|
}
|
||||||
|
if((leds & LEDS_YELLOW) == LEDS_YELLOW) {
|
||||||
|
ti_lib_gpio_pin_write(BOARD_LED_2, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** @} */
|
Loading…
Reference in a new issue