mirror of https://github.com/ARMmbed/mbed-os.git
Update BLE, fix sleep and open-drain LEDs in MAX326xx
MAX32630FTHR gets BLE, uses timer peripheral 5 for HCI timing libexactLE update for 610,620 Fixup hal_sleep and hal_deepsleep for 620 LEDn outputs now forced to open-drainpull/4398/head
parent
692d9055b1
commit
3a4138369d
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
|
||||
* Copyright (C) 2017 Maxim Integrated Products, Inc., All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -52,10 +52,10 @@
|
|||
#include "hci_vs.h"
|
||||
|
||||
/* Number of WSF buffer pools */
|
||||
#define WSF_BUF_POOLS 4
|
||||
#define WSF_BUF_POOLS 5
|
||||
|
||||
/*! Free memory for pool buffers. */
|
||||
static uint8_t mainBufMem[768];
|
||||
static uint8_t mainBufMem[1040];
|
||||
|
||||
/*! Default pool descriptor. */
|
||||
static wsfBufPoolDesc_t mainPoolDesc[WSF_BUF_POOLS] =
|
||||
|
@ -63,24 +63,52 @@ static wsfBufPoolDesc_t mainPoolDesc[WSF_BUF_POOLS] =
|
|||
{ 16, 8 },
|
||||
{ 32, 4 },
|
||||
{ 64, 2 },
|
||||
{ 128, 2 }
|
||||
{ 128, 2 },
|
||||
{ 272, 1 }
|
||||
};
|
||||
|
||||
/* Store the Event signalling */
|
||||
bool isEventsSignaled = false;
|
||||
|
||||
/*! WSF handler ID */
|
||||
wsfHandlerId_t maximHandlerId;
|
||||
static volatile int reset_complete;
|
||||
|
||||
#ifdef BLE_HCI_UART
|
||||
static DigitalIn _rts(BT_CTS);
|
||||
static DigitalIn _cts(BT_RTS);
|
||||
static DigitalIn _clk(BT_CLK);
|
||||
static DigitalOut _shutdown(BT_RST, 0);
|
||||
static Serial _uart(BT_TX, BT_RX, 115200);
|
||||
#else
|
||||
/* Current mbed SPI API does not support HW slave selects. Configured in HCI driver. */
|
||||
static DigitalOut _csn(HCI_CSN, 1);
|
||||
static SPI _spi(HCI_MOSI, HCI_MISO, HCI_SCK, HCI_CSN);
|
||||
static DigitalOut _rst(HCI_RST, 0);
|
||||
static InterruptIn _irq(HCI_IRQ);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The singleton which represents the MaximBLE transport for the BLE.
|
||||
*/
|
||||
static MaximBLE deviceInstance;
|
||||
|
||||
extern "C" {
|
||||
|
||||
/*
|
||||
* This function will signal to the user code by calling signalEventsToProcess.
|
||||
* It is registered and called into the Wsf Stack.
|
||||
*/
|
||||
void wsf_mbed_ble_signal_event(void)
|
||||
{
|
||||
if (isEventsSignaled == false) {
|
||||
isEventsSignaled = true;
|
||||
deviceInstance.signalEventsToProcess(::BLE::DEFAULT_INSTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* BLE-API requires an implementation of the following function in order to
|
||||
* obtain its transport handle.
|
||||
|
@ -240,16 +268,20 @@ ble_error_t MaximBLE::init(BLE::InstanceID_t instanceID, FunctionPointerWithCont
|
|||
maximHandlerId = WsfOsSetNextHandler(maximHandler);
|
||||
|
||||
/* init HCI */
|
||||
#ifdef BLE_HCI_UART
|
||||
hciDrvInit(BT_TX, BT_RST, BT_CLK);
|
||||
#else
|
||||
_irq.disable_irq();
|
||||
_irq.rise(hciDrvIsr);
|
||||
_irq.fall(NULL);
|
||||
hciDrvInit(HCI_CSN, HCI_RST, HCI_IRQ);
|
||||
#endif
|
||||
|
||||
/* Register for stack callbacks */
|
||||
DmRegister(DmCback);
|
||||
DmConnRegister(DM_CLIENT_ID_APP, DmCback);
|
||||
AttConnRegister(AppServerConnCback);
|
||||
|
||||
|
||||
/* Reset the device */
|
||||
reset_complete = 0;
|
||||
DmDevReset();
|
||||
|
@ -301,12 +333,15 @@ void MaximBLE::waitForEvent(void)
|
|||
|
||||
void MaximBLE::processEvents()
|
||||
{
|
||||
callDispatcher();
|
||||
if (isEventsSignaled) {
|
||||
isEventsSignaled = false;
|
||||
callDispatcher();
|
||||
}
|
||||
}
|
||||
|
||||
void MaximBLE::timeoutCallback(void)
|
||||
{
|
||||
// do nothing. just an interrupt for wake up.
|
||||
wsf_mbed_ble_signal_event();
|
||||
}
|
||||
|
||||
void MaximBLE::callDispatcher(void)
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -115,7 +115,7 @@ void hal_deepsleep(void)
|
|||
|
||||
// Deep Sleep is not working properly on Revisions A3 and earlier
|
||||
if (part_rev <= REVISION_A3) {
|
||||
sleep();
|
||||
hal_sleep();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -128,7 +128,7 @@ void hal_deepsleep(void)
|
|||
// Do not enter Deep Sleep if connected to VBUS
|
||||
if (MXC_USB->dev_intfl & MXC_F_USB_DEV_INTFL_VBUS_ST) {
|
||||
__enable_irq();
|
||||
sleep();
|
||||
hal_sleep();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
|
||||
* Copyright (C) 2016-2017 Maxim Integrated Products, Inc., All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
@ -144,6 +144,10 @@ typedef enum {
|
|||
OWM = P4_0,
|
||||
|
||||
// BTLE Module hardwired
|
||||
BT_TX = P0_0,
|
||||
BT_RX = P0_1,
|
||||
BT_RTS = P0_2,
|
||||
BT_CTS = P0_3,
|
||||
BT_RST = P1_6,
|
||||
BT_CLK = P1_7,
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -67,6 +67,13 @@ void gpio_init(gpio_t *obj, PinName name)
|
|||
|
||||
void gpio_mode(gpio_t *obj, PinMode mode)
|
||||
{
|
||||
#ifdef OPEN_DRAIN_LEDS
|
||||
if ((obj->name == LED1) || (obj->name == LED2) ||
|
||||
(obj->name == LED3) || (obj->name == LED4)) {
|
||||
mode = OpenDrain;
|
||||
}
|
||||
#endif
|
||||
|
||||
obj->mode = mode;
|
||||
pin_mode(obj->name, mode);
|
||||
}
|
||||
|
|
|
@ -2060,10 +2060,11 @@
|
|||
"MAX32630FTHR": {
|
||||
"inherits": ["Target"],
|
||||
"core": "Cortex-M4F",
|
||||
"macros": ["__SYSTEM_HFX=96000000", "TARGET=MAX32630", "TARGET_REV=0x4132"],
|
||||
"macros": ["__SYSTEM_HFX=96000000", "TARGET=MAX32630", "TARGET_REV=0x4132", "BLE_HCI_UART", "OPEN_DRAIN_LEDS"],
|
||||
"extra_labels": ["Maxim", "MAX32630"],
|
||||
"supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
|
||||
"device_has": ["ANALOGIN", "ERROR_RED", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
|
||||
"features": ["BLE"],
|
||||
"release_versions": ["2", "5"]
|
||||
},
|
||||
"EFM32": {
|
||||
|
|
Loading…
Reference in New Issue