From b8687ab524277553cd1174e25b7159aa55f40479 Mon Sep 17 00:00:00 2001 From: Vance Farren <37904409+farrenv@users.noreply.github.com> Date: Mon, 15 Jun 2020 16:47:27 -0400 Subject: [PATCH 1/4] add EP_ATLAS as mbed target --- .../TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp | 216 ++++++++++++ .../TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.h | 49 +++ .../TARGET_EP_ATLAS/PinNames.h | 323 ++++++++++++++++++ .../TARGET_EP_ATLAS/device.h | 38 +++ .../TARGET_EP_ATLAS/mbed_lib.json | 22 ++ targets/targets.json | 23 ++ 6 files changed, 671 insertions(+) create mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp create mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.h create mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h create mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/device.h create mode 100644 targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/mbed_lib.json diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp new file mode 100644 index 0000000000..c135359fb2 --- /dev/null +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp @@ -0,0 +1,216 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//#if MBED_CONF_NSAPI_PRESENT + +//#if EP_ATLAS_ENABLE_CELL + +#include "gpio_api.h" +#include "platform/mbed_thread.h" +#include "PinNames.h" +//#include "mbed.h" + +#include "UARTSerial.h" +#include "ONBOARD_TELIT_ME310.h" +#include "ThisThread.h" +#include "CellularLog.h" + + +using namespace mbed; + +ONBOARD_TELIT_ME310::ONBOARD_TELIT_ME310(FileHandle *fh) : TELIT_ME310(fh, P0_31, true) +{ +} + +nsapi_error_t ONBOARD_TELIT_ME310::hard_power_on() +{ + onboard_modem_init(); + return NSAPI_ERROR_OK; +} + +nsapi_error_t ONBOARD_TELIT_ME310::hard_power_off() +{ + onboard_modem_deinit(); + return NSAPI_ERROR_OK; +} + +nsapi_error_t ONBOARD_TELIT_ME310::soft_power_on() +{ + onboard_modem_power_up(); + // From Telit_xE310 Global form factor App note: It is mandatory to avoid sending data to the serial ports during the first 200ms of the module start-up. + rtos::ThisThread::sleep_for(200); + return NSAPI_ERROR_OK; +} + +nsapi_error_t ONBOARD_TELIT_ME310::soft_power_off() +{ + onboard_modem_power_down(); + return NSAPI_ERROR_OK; +} + +nsapi_error_t ONBOARD_TELIT_ME310::init() +{ + nsapi_error_t err = AT_CellularDevice::init(); + if (err != NSAPI_ERROR_OK) { + return err; + } + _at->lock(); +#if DEVICE_SERIAL_FC + _at->at_cmd_discard("&K3;&C1;&D0", ""); +#else + _at->at_cmd_discard("&K0;&C1;&D0", ""); +#endif + + // AT#QSS=1 + // Enable the Query SIM Status unsolicited indication in the ME. The format of the + // unsolicited indication is the following: + // #QSS: + // The ME informs at + // every SIM status change through the basic unsolicited indication where range is 0...1 + // values: + // - 0: SIM not inserted + // - 1: SIM inserted + _at->at_cmd_discard("#QSS", "=1"); + + // AT#PSNT=1 + // Set command enables unsolicited result code for packet service network type (PSNT) + // having the following format: + // #PSNT: + // values: + // - 0: GPRS network + // - 4: LTE network + // - 5: unknown or not registered + _at->at_cmd_discard("#PSNT", "=1"); + + // AT+CMER=2 + // Set command enables sending of unsolicited result codes from TA to TE in the case of + // indicator state changes. + // Current setting: buffer +CIEV Unsolicited Result Codes in the TA when TA-TE link is + // reserved (e.g. on-line data mode) and flush them to the TE after + // reservation; otherwise forward them directly to the TE + _at->at_cmd_discard("+CMER", "=2"); + + // AT+CMEE=2 + // Set command disables the use of result code +CME ERROR: as an indication of an + // error relating to the +Cxxx command issued. When enabled, device related errors cause the +CME + // ERROR: final result code instead of the default ERROR final result code. ERROR is returned + // normally when the error message is related to syntax, invalid parameters or DTE functionality. + // Current setting: enable and use verbose values + _at->at_cmd_discard("+CMEE", "=2"); + + // AT#PORTCFG=0 + // Set command allows to connect Service Access Points to the external physical ports giving a great + // flexibility. Examples of Service Access Points: AT Parser Instance #1, #2, #3, etc.. + _at->at_cmd_discard("#PORTCFG", "=", "%d", EP_ATLAS_PORT_CONFIGURATION_VARIANT); + + // AT&W&P + // - AT&W: Execution command stores on profile the complete configuration of the device. If + // parameter is omitted, the command has the same behavior of AT&W0. + // - AT&P: Execution command defines which full profile will be loaded at startup. If parameter + // is omitted, the command has the same behavior as AT&P0 + _at->at_cmd_discard("&W&P", ""); + + return _at->unlock_return_error(); +} + +void ONBOARD_TELIT_ME310::press_power_button(int time_ms) +{ + gpio_t gpio_CELL_ON_OFF; + //gpio_t gpio_PWR_MON; + // volatile int read_pwr_mon_gpio = 0; + + // gpio_init_in(&gpio_PWR_MON, PIN_NAME_CELL_PWRMON); + // read_pwr_mon_gpio = gpio_read(&gpio_PWR_MON); + +// if(!(gpio_read(&gpio_PWR_MON))) +// { +// gpio_init_out_ex(&gpio_CELL_ON_OFF, P0_31, 1); +// gpio_write(&gpio_CELL_ON_OFF, 1); +// thread_sleep_for(time_ms); +// gpio_write(&gpio_CELL_ON_OFF, 0); +// } + +gpio_init_out_ex(&gpio_CELL_ON_OFF, P0_31, 1); +gpio_write(&gpio_CELL_ON_OFF, 1); + + + +// DigitalIn pwr_mon(PIN_NAME_CELL_PWRMON); +// DigitalInOut cell_on_off(P0_31,PIN_INPUT,PullNone,1); + +// if(!pwr_mon.read()) +// { +// cell_on_off.output(); +// cell_on_off = 0; +// ThisThread::sleep_for(time_ms); +// cell_on_off = 1; +// } + + +} + +void ONBOARD_TELIT_ME310::onboard_modem_init() +{ + // gpio_t gpio; + + // gpio_init_out_ex(&gpio, PIN_NAME_CELL_POWER_ENABLE, 0); + // gpio_write(&gpio, 1); +} + +void ONBOARD_TELIT_ME310::onboard_modem_deinit() +{ + // gpio_t gpio; + + // gpio_init_out_ex(&gpio, PIN_NAME_CELL_POWER_ENABLE, 1); + // gpio_write(&gpio, 0); +} + +void ONBOARD_TELIT_ME310::onboard_modem_power_up() +{ + /* keep the power line low for 5 seconds */ + press_power_button(6000); + /* give modem a little time to respond */ +} + +void ONBOARD_TELIT_ME310::onboard_modem_power_down() +{ + gpio_t gpio; + + gpio_init_out_ex(&gpio, P0_31, 0); + /* keep the power line low for more than 3 seconds. + * If 3G_ON_OFF pin is kept low for more than a second, a controlled disconnect and shutdown takes + * place, Due to the network disconnect, shut-off can take up to 30 seconds. However, we wait for 10 + * seconds only */ + thread_sleep_for(10 * 1000); +} + +CellularDevice *CellularDevice::get_target_default_instance() +{ + static UARTSerial serial(P1_2, P1_1, 115200); +#if DEVICE_SERIAL_FC + if (P0_11 != NC && P1_8 != NC) { + tr_debug("Modem flow control: RTS %d CTS %d", P0_11, P1_8); + serial.set_flow_control(SerialBase::RTSCTS, P0_11, P1_8); + } +#endif + static ONBOARD_TELIT_ME310 device(&serial); + return &device; +} + +//#endif // EP_ATLAS_ENABLE_CELL + +//#endif // MBED_CONF_NSAPI_PRESENT diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.h new file mode 100644 index 0000000000..6467159700 --- /dev/null +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.h @@ -0,0 +1,49 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ONBOARD_TELIT_ME310_ +#define ONBOARD_TELIT_ME310_ + +#include "TELIT_ME310.h" + +namespace mbed { + +class ONBOARD_TELIT_ME310 : public TELIT_ME310 { +public: + ONBOARD_TELIT_ME310(FileHandle *fh); + + virtual nsapi_error_t init(); + virtual nsapi_error_t hard_power_on(); + virtual nsapi_error_t hard_power_off(); + virtual nsapi_error_t soft_power_on(); + virtual nsapi_error_t soft_power_off(); + +private: + void press_power_button(int time_ms); + + void onboard_modem_init(); + + void onboard_modem_deinit(); + + void onboard_modem_power_up(); + + void onboard_modem_power_down(); +}; + +} // namespace mbed + +#endif // ONBOARD_TELIT_ME310_ diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h new file mode 100644 index 0000000000..f8d6808a2b --- /dev/null +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h @@ -0,0 +1,323 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "nrf_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + PIN_INPUT, + PIN_OUTPUT +} PinDirection; + +#define PORT_SHIFT 3 + +///> define macro producing for example Px_y = NRF_GPIO_PIN_MAP(x, y) +#define PinDef(port_num, pin_num) P##port_num##_##pin_num = NRF_GPIO_PIN_MAP(port_num, pin_num) + + +typedef enum { + PinDef(0, 0), // P0_0 = 0... + PinDef(0, 1), + PinDef(0, 2), + PinDef(0, 3), + PinDef(0, 4), + PinDef(0, 5), + PinDef(0, 6), + PinDef(0, 7), + PinDef(0, 8), + PinDef(0, 9), + PinDef(0, 10), + PinDef(0, 11), + PinDef(0, 12), + PinDef(0, 13), + PinDef(0, 14), + PinDef(0, 15), + PinDef(0, 16), + PinDef(0, 17), + PinDef(0, 18), + PinDef(0, 19), + PinDef(0, 20), + PinDef(0, 21), + PinDef(0, 22), + PinDef(0, 23), + PinDef(0, 24), + PinDef(0, 25), + PinDef(0, 26), + PinDef(0, 27), + PinDef(0, 28), + PinDef(0, 29), + PinDef(0, 30), + PinDef(0, 31), + + PinDef(1, 0), //P1_1 = 32... + PinDef(1, 1), + PinDef(1, 2), + PinDef(1, 3), + PinDef(1, 4), + PinDef(1, 5), + PinDef(1, 6), + PinDef(1, 7), + PinDef(1, 8), + PinDef(1, 9), + PinDef(1, 10), + PinDef(1, 11), + PinDef(1, 12), + PinDef(1, 13), + PinDef(1, 14), + PinDef(1, 15), + + // Port0 + p0 = P0_0, + p1 = P0_1, + p2 = P0_2, + p3 = P0_3, + p4 = P0_4, + p5 = P0_5, + p6 = P0_6, + p7 = P0_7, + p8 = P0_8, + p9 = P0_9, + p10 = P0_10, + p11 = P0_11, + p12 = P0_12, + p13 = P0_13, + p14 = P0_14, + p15 = P0_15, + p16 = P0_16, + p17 = P0_17, + p18 = P0_18, + p19 = P0_19, + p20 = P0_20, + p21 = P0_21, + p22 = P0_22, + p23 = P0_23, + p24 = P0_24, + p25 = P0_25, + p26 = P0_26, + p27 = P0_27, + p28 = P0_28, + p29 = P0_29, + p30 = P0_30, + p31 = P0_31, + + // Port1 + p32 = P1_0, + p33 = P1_1, + p34 = P1_2, + p35 = P1_3, + p36 = P1_4, + p37 = P1_5, + p38 = P1_6, + p39 = P1_7, + p40 = P1_8, + p41 = P1_9, + p42 = P1_10, + p43 = P1_11, + p44 = P1_12, + p45 = P1_13, + p46 = P1_14, + p47 = P1_15, + + SPI_PSELMOSI0 = P1_13, + SPI_PSELMISO0 = P1_14, + SPI_PSELSS0 = P1_12, + SPI_PSELSCK0 = P1_15, + + SPI_PSELMOSI1 = P1_2, + SPI_PSELMISO1 = P1_3, + SPI_PSELSS1 = P1_1, + SPI_PSELSCK1 = P1_4, + + SPIS_PSELMOSI = P1_2, + SPIS_PSELMISO = P1_3, + SPIS_PSELSS = P1_1, + SPIS_PSELSCK = P1_4, + + I2C_SDA0 = p26, + I2C_SCL0 = p27, + + D0 = P1_1, + D1 = P1_2, + D2 = P1_3, + D3 = P1_4, + D4 = P1_5, + D5 = P1_6, + D6 = P1_7, + D7 = P1_8, + + D8 = P1_10, + D9 = P1_11, + D10 = P1_12, + D11 = P1_13, + D12 = P1_14, + D13 = P1_15, + + D14 = p26, + D15 = p27, + + A0 = p3, + A1 = p4, + A2 = p28, + A3 = p29, + A4 = p30, + A5 = p31, + + /**** QSPI pins ****/ + // QSPI1_IO0 = P0_20, + // QSPI1_IO1 = P0_21, + // QSPI1_IO2 = P0_22, + // QSPI1_IO3 = P0_23, + // QSPI1_SCK = P0_19, + // QSPI1_CSN = P0_17, + + + // Battery + // PIN_NAME_BATTERY = P0_2, + // PIN_NAME_BATTERY_MONITOR_ENABLE = P1_11, + + // Board ID + // PIN_NAME_BOARD_ID = P0_3, + // PIN_NAME_BOARD_ID_DISABLE = P1_6, + + // NFC + // PIN_NAME_NFC1 = P0_9, + // PIN_NAME_NFC2 = P0_10, + + // DEBUG UART + PIN_NAME_DEBUG_RX = P0_16, + PIN_NAME_DEBUG_TX = P0_13, + + + + // Cell + //PIN_NAME_CELL_POWER_ENABLE = P0_28, + PIN_NAME_CELL_ON_OFF = P0_31, + PIN_NAME_CELL_HW_SHUTDOWN = P0_24, + PIN_NAME_CELL_RX = P1_1, + PIN_NAME_CELL_TX = P1_3, + PIN_NAME_CELL_DTR = P1_4, + //PIN_NAME_CELL_DSR = P1_3, + //PIN_NAME_CELL_DCD = P0_15, + PIN_NAME_CELL_RTS = P1_8, + PIN_NAME_CELL_CTS = P0_11, + PIN_NAME_CELL_PWRMON = P1_15,//as agora + + // Sensors (I2C) + //PIN_NAME_SENSOR_POWER_ENABLE = P0_31, + PIN_NAME_SDA = P0_26, + PIN_NAME_SCL = P0_27, + + // Sensor interrupts + //PIN_NAME_INT_ACCEL = P1_5, + //PIN_NAME_INT_LIGHT_TOF = P0_4, + + // QSPI + PIN_NAME_QSPI_IO0 = P0_20, + PIN_NAME_QSPI_IO1 = P0_21, + PIN_NAME_QSPI_IO2 = P0_22, + PIN_NAME_QSPI_IO3 = P0_23, + PIN_NAME_QSPI_CSN = P0_17, + PIN_NAME_QSPI_CLK = P0_19, + + // Miscellaneous I/O + //PIN_NAME_PUSH_BUTTON = P0_29, + PIN_NAME_LED_RED = P0_8, + PIN_NAME_LED_GREEN = P1_9, + PIN_NAME_LED_BLUE = P0_12, + PIN_NAME_GPIO_04 = P1_3, + PIN_NAME_GPIO_01 = P0_4, + PIN_NAME_GPIO_02 = P0_5, + PIN_NAME_TEMP_SENSE = P0_2, + + //DF12 + IO5 = PIN_NAME_GPIO_04, + AD3 = PIN_NAME_GPIO_02, + AD2 = PIN_NAME_GPIO_01, + //PIN_NAME_BT840_RESETN = P0_18, + //PIN_NAME_BT840_SWO = P1_0, + + TEMP_SENSE = PIN_NAME_TEMP_SENSE, + + /* mbed pins */ + + // used by mbed for default serial out on printf statements + RX_PIN_NUMBER = PIN_NAME_DEBUG_RX, + TX_PIN_NUMBER = PIN_NAME_DEBUG_TX, + USBRX = PIN_NAME_DEBUG_RX, + USBTX = PIN_NAME_DEBUG_TX, + STDIO_UART_RX = PIN_NAME_DEBUG_RX, + STDIO_UART_TX = PIN_NAME_DEBUG_TX, + + MDMTXD = PIN_NAME_CELL_TX, + MDMRXD = PIN_NAME_CELL_RX, + MDMCTS = PIN_NAME_CELL_CTS, + //MDMDCD = PIN_NAME_CELL_DCD, + //MDMDSR = PIN_NAME_CELL_DSR, + MDMDTR = PIN_NAME_CELL_DTR, + MDMRTS = PIN_NAME_CELL_RTS, + + /**** QSPI FLASH pins ****/ + QSPI_FLASH1_IO0 = PIN_NAME_QSPI_IO0, + QSPI_FLASH1_IO1 = PIN_NAME_QSPI_IO1, + QSPI_FLASH1_IO2 = PIN_NAME_QSPI_IO2, + QSPI_FLASH1_IO3 = PIN_NAME_QSPI_IO3, + QSPI_FLASH1_SCK = PIN_NAME_QSPI_CLK, + QSPI_FLASH1_CSN = PIN_NAME_QSPI_CSN, + + SPI_MOSI = PIN_NAME_QSPI_IO0, + SPI_MISO = PIN_NAME_QSPI_IO1, + SPI_SCK = PIN_NAME_QSPI_CLK, + SPI_CS = PIN_NAME_QSPI_CSN, + + // LED + LED1 = PIN_NAME_LED_RED, + LED2 = PIN_NAME_LED_GREEN, + LED3 = PIN_NAME_LED_BLUE, + + // Not connected + NC = (int)0xFFFFFFFF, + + // Compiler complains unless these are specified + STDIO_UART_CTS = NC, + STDIO_UART_RTS = NC, + MDMRI = NC + +} PinName; + +typedef enum { + PullNone = 0, + PullDown = 1, + PullUp = 3, + PullDefault = PullUp +} PinMode; + +#define ACTIVE_HIGH_POLARITY 1 +#define ACTIVE_LOW_POLARITY 0 + +#define MDM_PIN_POLARITY ACTIVE_HIGH_POLARITY + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/device.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/device.h new file mode 100644 index 0000000000..2427e752ea --- /dev/null +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/device.h @@ -0,0 +1,38 @@ +// The 'features' section in 'target.json' is now used to create the device's hardware preprocessor switches. +// Check the 'features' section of the target description in 'targets.json' for more details. +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_DEVICE_H +#define MBED_DEVICE_H + + + + + + + + + + + + + + + + +#include "objects.h" + +#endif diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/mbed_lib.json b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/mbed_lib.json new file mode 100644 index 0000000000..8b505c8b76 --- /dev/null +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/mbed_lib.json @@ -0,0 +1,22 @@ +{ + "name": "ep-atlas", + "config": { + "enable-cell" : { + "help" : "Enable the cell module on the EP_ATLAS board", + "macro_name" : "EP_ATLAS_ENABLE_CELL", + "value" : true + }, + "port-configuration-variant" : { + "help" : "Telit ME310C1 AT#PORTCFG Variant value", + "macro_name" : "EP_ATLAS_PORT_CONFIGURATION_VARIANT", + "value" : 0 + } + }, + "target_overrides": { + "EP_ATLAS": { + "target.network-default-interface-type": "CELLULAR" + + } + + } +} \ No newline at end of file diff --git a/targets/targets.json b/targets/targets.json index bb6fe82f5e..589be6f697 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -7616,6 +7616,29 @@ ], "device_name": "STM32G474RETx" }, + "EP_ATLAS": { + "inherits": ["MCU_NRF52840"], + "device_name": "nRF52840_xxAA", + "supported_form_factors": [], + "config": { + "modem_is_on_board": { + "help": "Value: Tells the build system that the modem is on-board as oppose to a plug-in shield/module.", + "value": 1, + "macro_name": "MODEM_ON_BOARD" + }, + "modem_data_connection_type": { + "help": "Value: Defines how an on-board modem is wired up to the MCU, e.g., data connection can be a UART or USB and so forth.", + "value": 1, + "macro_name": "MODEM_ON_BOARD_UART" + } + }, + "components_add": ["SPIF"], + "components_remove": ["QSPIF"], + "release_versions": ["5"], + "macros_add": [ + "CONFIG_GPIO_AS_PINRESET" + ] +} "__build_tools_metadata__": { "version": "1", "public": false From 1d8da69586487a788cbdd08f6ff793b5338b856d Mon Sep 17 00:00:00 2001 From: Vance Farren <37904409+farrenv@users.noreply.github.com> Date: Tue, 16 Jun 2020 14:31:26 -0400 Subject: [PATCH 2/4] updates for mbed os 6 --- .../TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp index c135359fb2..268b38a500 100644 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp @@ -24,7 +24,7 @@ #include "PinNames.h" //#include "mbed.h" -#include "UARTSerial.h" +#include "BufferedSerial.h" #include "ONBOARD_TELIT_ME310.h" #include "ThisThread.h" #include "CellularLog.h" @@ -68,11 +68,11 @@ nsapi_error_t ONBOARD_TELIT_ME310::init() if (err != NSAPI_ERROR_OK) { return err; } - _at->lock(); + _at.lock(); #if DEVICE_SERIAL_FC - _at->at_cmd_discard("&K3;&C1;&D0", ""); + _at.at_cmd_discard("&K3;&C1;&D0", ""); #else - _at->at_cmd_discard("&K0;&C1;&D0", ""); + _at.at_cmd_discard("&K0;&C1;&D0", ""); #endif // AT#QSS=1 @@ -84,7 +84,7 @@ nsapi_error_t ONBOARD_TELIT_ME310::init() // values: // - 0: SIM not inserted // - 1: SIM inserted - _at->at_cmd_discard("#QSS", "=1"); + _at.at_cmd_discard("#QSS", "=1"); // AT#PSNT=1 // Set command enables unsolicited result code for packet service network type (PSNT) @@ -94,7 +94,7 @@ nsapi_error_t ONBOARD_TELIT_ME310::init() // - 0: GPRS network // - 4: LTE network // - 5: unknown or not registered - _at->at_cmd_discard("#PSNT", "=1"); + _at.at_cmd_discard("#PSNT", "=1"); // AT+CMER=2 // Set command enables sending of unsolicited result codes from TA to TE in the case of @@ -102,7 +102,7 @@ nsapi_error_t ONBOARD_TELIT_ME310::init() // Current setting: buffer +CIEV Unsolicited Result Codes in the TA when TA-TE link is // reserved (e.g. on-line data mode) and flush them to the TE after // reservation; otherwise forward them directly to the TE - _at->at_cmd_discard("+CMER", "=2"); + _at.at_cmd_discard("+CMER", "=2"); // AT+CMEE=2 // Set command disables the use of result code +CME ERROR: as an indication of an @@ -110,21 +110,21 @@ nsapi_error_t ONBOARD_TELIT_ME310::init() // ERROR: final result code instead of the default ERROR final result code. ERROR is returned // normally when the error message is related to syntax, invalid parameters or DTE functionality. // Current setting: enable and use verbose values - _at->at_cmd_discard("+CMEE", "=2"); + _at.at_cmd_discard("+CMEE", "=2"); // AT#PORTCFG=0 // Set command allows to connect Service Access Points to the external physical ports giving a great // flexibility. Examples of Service Access Points: AT Parser Instance #1, #2, #3, etc.. - _at->at_cmd_discard("#PORTCFG", "=", "%d", EP_ATLAS_PORT_CONFIGURATION_VARIANT); + _at.at_cmd_discard("#PORTCFG", "=", "%d", EP_ATLAS_PORT_CONFIGURATION_VARIANT); // AT&W&P // - AT&W: Execution command stores on profile the complete configuration of the device. If // parameter is omitted, the command has the same behavior of AT&W0. // - AT&P: Execution command defines which full profile will be loaded at startup. If parameter // is omitted, the command has the same behavior as AT&P0 - _at->at_cmd_discard("&W&P", ""); + _at.at_cmd_discard("&W&P", ""); - return _at->unlock_return_error(); + return _at.unlock_return_error(); } void ONBOARD_TELIT_ME310::press_power_button(int time_ms) @@ -200,7 +200,7 @@ void ONBOARD_TELIT_ME310::onboard_modem_power_down() CellularDevice *CellularDevice::get_target_default_instance() { - static UARTSerial serial(P1_2, P1_1, 115200); + static BufferedSerial serial(P1_2, P1_1, 115200); #if DEVICE_SERIAL_FC if (P0_11 != NC && P1_8 != NC) { tr_debug("Modem flow control: RTS %d CTS %d", P0_11, P1_8); From 1f20df9c7dbe52c78712d0e03a34c11c1a4edfc0 Mon Sep 17 00:00:00 2001 From: Vance Farren <37904409+farrenv@users.noreply.github.com> Date: Tue, 16 Jun 2020 14:09:57 -0400 Subject: [PATCH 3/4] missing comma in targets.json --- targets/targets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/targets/targets.json b/targets/targets.json index 589be6f697..10986e7fc3 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -7638,7 +7638,7 @@ "macros_add": [ "CONFIG_GPIO_AS_PINRESET" ] -} +}, "__build_tools_metadata__": { "version": "1", "public": false From 70b0acaa335251aa1f8404e1e9fc132df199a324 Mon Sep 17 00:00:00 2001 From: Vance Farren <37904409+farrenv@users.noreply.github.com> Date: Thu, 18 Jun 2020 08:56:40 -0400 Subject: [PATCH 4/4] clean up dead code --- .../TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp | 51 +--------- .../TARGET_EP_ATLAS/PinNames.h | 94 ++++++------------- 2 files changed, 31 insertions(+), 114 deletions(-) diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp index 268b38a500..0fd55721df 100644 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/ONBOARD_TELIT_ME310.cpp @@ -15,15 +15,9 @@ * limitations under the License. */ -//#if MBED_CONF_NSAPI_PRESENT - -//#if EP_ATLAS_ENABLE_CELL - #include "gpio_api.h" #include "platform/mbed_thread.h" #include "PinNames.h" -//#include "mbed.h" - #include "BufferedSerial.h" #include "ONBOARD_TELIT_ME310.h" #include "ThisThread.h" @@ -130,53 +124,16 @@ nsapi_error_t ONBOARD_TELIT_ME310::init() void ONBOARD_TELIT_ME310::press_power_button(int time_ms) { gpio_t gpio_CELL_ON_OFF; - //gpio_t gpio_PWR_MON; - // volatile int read_pwr_mon_gpio = 0; - - // gpio_init_in(&gpio_PWR_MON, PIN_NAME_CELL_PWRMON); - // read_pwr_mon_gpio = gpio_read(&gpio_PWR_MON); - -// if(!(gpio_read(&gpio_PWR_MON))) -// { -// gpio_init_out_ex(&gpio_CELL_ON_OFF, P0_31, 1); -// gpio_write(&gpio_CELL_ON_OFF, 1); -// thread_sleep_for(time_ms); -// gpio_write(&gpio_CELL_ON_OFF, 0); -// } - -gpio_init_out_ex(&gpio_CELL_ON_OFF, P0_31, 1); -gpio_write(&gpio_CELL_ON_OFF, 1); - - - -// DigitalIn pwr_mon(PIN_NAME_CELL_PWRMON); -// DigitalInOut cell_on_off(P0_31,PIN_INPUT,PullNone,1); - -// if(!pwr_mon.read()) -// { -// cell_on_off.output(); -// cell_on_off = 0; -// ThisThread::sleep_for(time_ms); -// cell_on_off = 1; -// } - - + gpio_init_out_ex(&gpio_CELL_ON_OFF, P0_31, 1); + gpio_write(&gpio_CELL_ON_OFF, 1); } void ONBOARD_TELIT_ME310::onboard_modem_init() { - // gpio_t gpio; - - // gpio_init_out_ex(&gpio, PIN_NAME_CELL_POWER_ENABLE, 0); - // gpio_write(&gpio, 1); } void ONBOARD_TELIT_ME310::onboard_modem_deinit() { - // gpio_t gpio; - - // gpio_init_out_ex(&gpio, PIN_NAME_CELL_POWER_ENABLE, 1); - // gpio_write(&gpio, 0); } void ONBOARD_TELIT_ME310::onboard_modem_power_up() @@ -210,7 +167,3 @@ CellularDevice *CellularDevice::get_target_default_instance() static ONBOARD_TELIT_ME310 device(&serial); return &device; } - -//#endif // EP_ATLAS_ENABLE_CELL - -//#endif // MBED_CONF_NSAPI_PRESENT diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h index f8d6808a2b..be093991d2 100644 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/TARGET_EP_ATLAS/PinNames.h @@ -182,55 +182,24 @@ typedef enum { A4 = p30, A5 = p31, - /**** QSPI pins ****/ - // QSPI1_IO0 = P0_20, - // QSPI1_IO1 = P0_21, - // QSPI1_IO2 = P0_22, - // QSPI1_IO3 = P0_23, - // QSPI1_SCK = P0_19, - // QSPI1_CSN = P0_17, - - - // Battery - // PIN_NAME_BATTERY = P0_2, - // PIN_NAME_BATTERY_MONITOR_ENABLE = P1_11, - - // Board ID - // PIN_NAME_BOARD_ID = P0_3, - // PIN_NAME_BOARD_ID_DISABLE = P1_6, - - // NFC - // PIN_NAME_NFC1 = P0_9, - // PIN_NAME_NFC2 = P0_10, - // DEBUG UART PIN_NAME_DEBUG_RX = P0_16, PIN_NAME_DEBUG_TX = P0_13, - - // Cell - //PIN_NAME_CELL_POWER_ENABLE = P0_28, PIN_NAME_CELL_ON_OFF = P0_31, PIN_NAME_CELL_HW_SHUTDOWN = P0_24, PIN_NAME_CELL_RX = P1_1, PIN_NAME_CELL_TX = P1_3, PIN_NAME_CELL_DTR = P1_4, - //PIN_NAME_CELL_DSR = P1_3, - //PIN_NAME_CELL_DCD = P0_15, PIN_NAME_CELL_RTS = P1_8, PIN_NAME_CELL_CTS = P0_11, - PIN_NAME_CELL_PWRMON = P1_15,//as agora + PIN_NAME_CELL_PWRMON = P1_15, // Sensors (I2C) - //PIN_NAME_SENSOR_POWER_ENABLE = P0_31, PIN_NAME_SDA = P0_26, PIN_NAME_SCL = P0_27, - // Sensor interrupts - //PIN_NAME_INT_ACCEL = P1_5, - //PIN_NAME_INT_LIGHT_TOF = P0_4, - // QSPI PIN_NAME_QSPI_IO0 = P0_20, PIN_NAME_QSPI_IO1 = P0_21, @@ -240,59 +209,54 @@ typedef enum { PIN_NAME_QSPI_CLK = P0_19, // Miscellaneous I/O - //PIN_NAME_PUSH_BUTTON = P0_29, PIN_NAME_LED_RED = P0_8, - PIN_NAME_LED_GREEN = P1_9, - PIN_NAME_LED_BLUE = P0_12, + PIN_NAME_LED_GREEN = P1_9, + PIN_NAME_LED_BLUE = P0_12, PIN_NAME_GPIO_04 = P1_3, PIN_NAME_GPIO_01 = P0_4, PIN_NAME_GPIO_02 = P0_5, - PIN_NAME_TEMP_SENSE = P0_2, + PIN_NAME_TEMP_SENSE = P0_2, //DF12 IO5 = PIN_NAME_GPIO_04, AD3 = PIN_NAME_GPIO_02, AD2 = PIN_NAME_GPIO_01, - //PIN_NAME_BT840_RESETN = P0_18, - //PIN_NAME_BT840_SWO = P1_0, - TEMP_SENSE = PIN_NAME_TEMP_SENSE, + TEMP_SENSE = PIN_NAME_TEMP_SENSE, /* mbed pins */ // used by mbed for default serial out on printf statements - RX_PIN_NUMBER = PIN_NAME_DEBUG_RX, - TX_PIN_NUMBER = PIN_NAME_DEBUG_TX, - USBRX = PIN_NAME_DEBUG_RX, - USBTX = PIN_NAME_DEBUG_TX, - STDIO_UART_RX = PIN_NAME_DEBUG_RX, - STDIO_UART_TX = PIN_NAME_DEBUG_TX, + RX_PIN_NUMBER = PIN_NAME_DEBUG_RX, + TX_PIN_NUMBER = PIN_NAME_DEBUG_TX, + USBRX = PIN_NAME_DEBUG_RX, + USBTX = PIN_NAME_DEBUG_TX, + STDIO_UART_RX = PIN_NAME_DEBUG_RX, + STDIO_UART_TX = PIN_NAME_DEBUG_TX, - MDMTXD = PIN_NAME_CELL_TX, - MDMRXD = PIN_NAME_CELL_RX, - MDMCTS = PIN_NAME_CELL_CTS, - //MDMDCD = PIN_NAME_CELL_DCD, - //MDMDSR = PIN_NAME_CELL_DSR, - MDMDTR = PIN_NAME_CELL_DTR, - MDMRTS = PIN_NAME_CELL_RTS, + MDMTXD = PIN_NAME_CELL_TX, + MDMRXD = PIN_NAME_CELL_RX, + MDMCTS = PIN_NAME_CELL_CTS, + MDMDTR = PIN_NAME_CELL_DTR, + MDMRTS = PIN_NAME_CELL_RTS, /**** QSPI FLASH pins ****/ - QSPI_FLASH1_IO0 = PIN_NAME_QSPI_IO0, - QSPI_FLASH1_IO1 = PIN_NAME_QSPI_IO1, - QSPI_FLASH1_IO2 = PIN_NAME_QSPI_IO2, - QSPI_FLASH1_IO3 = PIN_NAME_QSPI_IO3, - QSPI_FLASH1_SCK = PIN_NAME_QSPI_CLK, - QSPI_FLASH1_CSN = PIN_NAME_QSPI_CSN, + QSPI_FLASH1_IO0 = PIN_NAME_QSPI_IO0, + QSPI_FLASH1_IO1 = PIN_NAME_QSPI_IO1, + QSPI_FLASH1_IO2 = PIN_NAME_QSPI_IO2, + QSPI_FLASH1_IO3 = PIN_NAME_QSPI_IO3, + QSPI_FLASH1_SCK = PIN_NAME_QSPI_CLK, + QSPI_FLASH1_CSN = PIN_NAME_QSPI_CSN, - SPI_MOSI = PIN_NAME_QSPI_IO0, - SPI_MISO = PIN_NAME_QSPI_IO1, - SPI_SCK = PIN_NAME_QSPI_CLK, - SPI_CS = PIN_NAME_QSPI_CSN, + SPI_MOSI = PIN_NAME_QSPI_IO0, + SPI_MISO = PIN_NAME_QSPI_IO1, + SPI_SCK = PIN_NAME_QSPI_CLK, + SPI_CS = PIN_NAME_QSPI_CSN, // LED - LED1 = PIN_NAME_LED_RED, - LED2 = PIN_NAME_LED_GREEN, - LED3 = PIN_NAME_LED_BLUE, + LED1 = PIN_NAME_LED_RED, + LED2 = PIN_NAME_LED_GREEN, + LED3 = PIN_NAME_LED_BLUE, // Not connected NC = (int)0xFFFFFFFF,