mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
emb6: provide minimal HAL wrapper
This commit is contained in:
parent
aecb8ef15b
commit
518f645779
@ -365,6 +365,7 @@ ifneq (,$(filter emb6,$(USEMODULE)))
|
||||
USEPKG += emb6
|
||||
USEMODULE += emb6_bsp
|
||||
USEMODULE += emb6_common
|
||||
USEMODULE += emb6_contrib
|
||||
USEMODULE += emb6_ipv6
|
||||
USEMODULE += emb6_ipv6_multicast
|
||||
USEMODULE += emb6_llsec
|
||||
|
@ -1,7 +1,9 @@
|
||||
PKG_BUILDDIR ?= $(BINDIRBASE)/pkg/$(BOARD)/emb6
|
||||
EMB6_DIR := $(PKG_BUILDDIR)
|
||||
EMB6_CONTRIB := $(RIOTBASE)/pkg/emb6/contrib
|
||||
|
||||
INCLUDES += -I$(EMB6_DIR)/target
|
||||
INCLUDES += -I$(PKG_BUILDDIR)/target
|
||||
INCLUDES += -I$(RIOTBASE)/pkg/emb6/include
|
||||
|
||||
ifeq (,$(filter emb6_router,$(USEMODULE)))
|
||||
CFLAGS += -DEMB6_CONF_ROUTER=FALSE
|
||||
@ -16,6 +18,10 @@ ifneq (,$(filter emb6_common,$(USEMODULE)))
|
||||
INCLUDES += -I$(EMB6_DIR)/emb6
|
||||
endif
|
||||
|
||||
ifneq (,$(filter emb6_contrib,$(USEMODULE)))
|
||||
DIRS += $(EMB6_CONTRIB)
|
||||
endif
|
||||
|
||||
ifneq (,$(filter emb6_ipv6,$(USEMODULE)))
|
||||
DIRS += $(EMB6_DIR)/emb6/src/net/ipv6
|
||||
INCLUDES += -I$(EMB6_DIR)/emb6/inc/net/ipv6
|
||||
|
3
pkg/emb6/contrib/Makefile
Normal file
3
pkg/emb6/contrib/Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
MODULE = emb6_contrib
|
||||
|
||||
include $(RIOTBASE)/Makefile.base
|
34
pkg/emb6/contrib/board_conf.c
Normal file
34
pkg/emb6/contrib/board_conf.c
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @author Martine Lenders <mlenders@inf.fu-berlin.de>
|
||||
*/
|
||||
|
||||
#include "etimer.h"
|
||||
#include "board_conf.h"
|
||||
|
||||
#define ENABLE_DEBUG (0)
|
||||
#include "debug.h"
|
||||
|
||||
uint8_t board_conf(s_ns_t *ps_nStack)
|
||||
{
|
||||
if (ps_nStack != NULL) {
|
||||
etimer_init();
|
||||
return ps_nStack->inif->init(ps_nStack);
|
||||
}
|
||||
else {
|
||||
DEBUG("Network stack pointer is NULL");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/** @} */
|
213
pkg/emb6/contrib/target.c
Normal file
213
pkg/emb6/contrib/target.c
Normal file
@ -0,0 +1,213 @@
|
||||
/*
|
||||
* Copyright (C) Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @author Martine Lenders <mlenders@inf.fu-berlin.de>
|
||||
*/
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "cpu.h"
|
||||
#include "led.h"
|
||||
#include "mutex.h"
|
||||
#include "periph/gpio.h"
|
||||
#include "periph/hwrng.h"
|
||||
#include "xtimer.h"
|
||||
|
||||
#include "target.h"
|
||||
#include "bsp.h"
|
||||
|
||||
static mutex_t critical_mutex = MUTEX_INIT;
|
||||
|
||||
void hal_enterCritical(void)
|
||||
{
|
||||
mutex_lock(&critical_mutex);
|
||||
}
|
||||
|
||||
void hal_exitCritical(void)
|
||||
{
|
||||
mutex_unlock(&critical_mutex);
|
||||
}
|
||||
|
||||
int8_t hal_init(void)
|
||||
{
|
||||
/* Should have happened long before emb6 started, so nothing to do */
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint8_t hal_getrand(void)
|
||||
{
|
||||
#if RANDOM_NUMOF
|
||||
uint8_t res;
|
||||
hwnrg_read((char *)&res, sizeof(res));
|
||||
return res;
|
||||
#elif defined(MODULE_RANDOM)
|
||||
return (uint8_t)(genrand_uint32() % UINT8_MAX);
|
||||
#else
|
||||
return 4; /* keeping the meme alive ;-) */
|
||||
#endif
|
||||
}
|
||||
|
||||
void hal_ledOn(uint16_t ui_led)
|
||||
{
|
||||
switch (ui_led) {
|
||||
case E_BSP_LED_RED:
|
||||
LED0_ON;
|
||||
break;
|
||||
case E_BSP_LED_YELLOW:
|
||||
LED1_ON;
|
||||
break;
|
||||
case E_BSP_LED_GREEN:
|
||||
LED2_ON;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void hal_ledOff(uint16_t ui_led)
|
||||
{
|
||||
switch (ui_led) {
|
||||
case E_BSP_LED_RED:
|
||||
LED0_OFF;
|
||||
break;
|
||||
case E_BSP_LED_YELLOW:
|
||||
LED1_OFF;
|
||||
break;
|
||||
case E_BSP_LED_GREEN:
|
||||
LED2_OFF;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t hal_extIntInit(en_targetExtInt_t e_extInt, pfn_intCallb_t pfn_intCallback)
|
||||
{
|
||||
/* RIOT does this in netdev2 initialization so nothing to do here. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hal_delay_us(uint32_t i_delay)
|
||||
{
|
||||
xtimer_usleep(i_delay);
|
||||
}
|
||||
|
||||
uint8_t hal_gpioPinInit(uint8_t c_pin, uint8_t c_dir, uint8_t c_initState)
|
||||
{
|
||||
/* Only used in board init code => not needed */
|
||||
(void)c_pin;
|
||||
(void)c_dir;
|
||||
(void)c_initState;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *hal_ctrlPinInit(en_targetExtPin_t e_pinType)
|
||||
{
|
||||
(void)e_pinType;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void hal_pinSet(void *p_pin)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
}
|
||||
|
||||
void hal_pinClr(void *p_pin)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
}
|
||||
|
||||
uint8_t hal_pinGet(void *p_pin)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *hal_spiInit(void)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/** \brief This function selects slave with which we will work
|
||||
* \param p_spi Pointer to spi description entity
|
||||
* \param action true or false
|
||||
*
|
||||
* \return 0 if failed, 1 id ok
|
||||
*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
uint8_t hal_spiSlaveSel(void *p_spi, bool action)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t hal_spiTransceive( uint8_t *txData, uint8_t *p_reg)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t hal_spiRead(uint8_t *p_reg, uint16_t i_length)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/** \brief This function writes a new value via given SPI interface
|
||||
* registers.
|
||||
*
|
||||
*
|
||||
* \param value Pointer to a value.
|
||||
* \param i_length Length of a data to be received
|
||||
*/
|
||||
/*----------------------------------------------------------------------------*/
|
||||
void hal_spiWrite(uint8_t *value, uint16_t i_length)
|
||||
{
|
||||
/* Only used in board/driver-related code code => not needed */
|
||||
}
|
||||
|
||||
void hal_watchdogReset(void)
|
||||
{
|
||||
/* WDT and tick-less scheduling don't make much sense */
|
||||
}
|
||||
|
||||
void hal_watchdogStart(void)
|
||||
{
|
||||
/* WDT and tick-less scheduling don't make much sense */
|
||||
}
|
||||
|
||||
void hal_watchdogStop(void)
|
||||
{
|
||||
/* WDT and tick-less scheduling don't make much sense */
|
||||
}
|
||||
|
||||
clock_time_t hal_getTick(void)
|
||||
{
|
||||
return (clock_time_t)xtimer_now();
|
||||
}
|
||||
|
||||
clock_time_t hal_getSec(void)
|
||||
{
|
||||
return (clock_time_t)xtimer_now() / SEC_IN_USEC;
|
||||
}
|
||||
|
||||
|
||||
clock_time_t hal_getTRes(void)
|
||||
{
|
||||
return SEC_IN_USEC;
|
||||
}
|
||||
|
||||
/** @} */
|
46
pkg/emb6/include/board_conf.h
Normal file
46
pkg/emb6/include/board_conf.h
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup emb6 emb6 network stack
|
||||
* @ingroup pkg
|
||||
* @brief
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief "Board" configuration for emb6
|
||||
*
|
||||
* @author Martine Lenders <mlenders@inf.fu-berlin.de>
|
||||
*/
|
||||
|
||||
#ifndef EMB6_BOARD_CONF_H_
|
||||
#define EMB6_BOARD_CONF_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "emb6.h"
|
||||
|
||||
/**
|
||||
* @brief emb6 board configuration function
|
||||
*
|
||||
* @param[in] ps_nStack pointer to global netstack struct
|
||||
*
|
||||
* @return success 1
|
||||
* @return failure 0
|
||||
*/
|
||||
uint8_t board_conf(s_ns_t *ps_nStack);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* EMB6_BOARD_CONF_H_ */
|
||||
/** @} */
|
||||
/** @} */
|
Loading…
Reference in New Issue
Block a user