mirror of https://github.com/ARMmbed/mbed-os.git
164 lines
4.6 KiB
C++
164 lines
4.6 KiB
C++
/*
|
|
* Copyright (c) 2018 ARM Limited. All rights reserved.
|
|
* 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 NANOSTACK_PHY_S2LP_H_
|
|
#define NANOSTACK_PHY_S2LP_H_
|
|
|
|
#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && defined(MBED_CONF_RTOS_PRESENT)
|
|
#include "inttypes.h"
|
|
#include "NanostackRfPhy.h"
|
|
#include "DigitalIn.h"
|
|
#include "DigitalOut.h"
|
|
#include "InterruptIn.h"
|
|
#include "SPI.h"
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_SDI)
|
|
#define S2LP_SPI_SDI MBED_CONF_S2LP_SPI_SDI
|
|
#else
|
|
#define S2LP_SPI_SDI D11
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_SDO)
|
|
#define S2LP_SPI_SDO MBED_CONF_S2LP_SPI_SDO
|
|
#else
|
|
#define S2LP_SPI_SDO D12
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_SCLK)
|
|
#define S2LP_SPI_SCLK MBED_CONF_S2LP_SPI_SCLK
|
|
#else
|
|
#define S2LP_SPI_SCLK D13
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_CS)
|
|
#define S2LP_SPI_CS MBED_CONF_S2LP_SPI_CS
|
|
#else
|
|
#define S2LP_SPI_CS A1
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_SDN)
|
|
#define S2LP_SPI_SDN MBED_CONF_S2LP_SPI_SDN
|
|
#else
|
|
#define S2LP_SPI_SDN D7
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_TEST_PIN_TX)
|
|
#define S2LP_TEST_PIN_TX MBED_CONF_S2LP_TEST_PIN_TX
|
|
#else
|
|
#define S2LP_TEST_PIN_TX D6
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_TEST_PIN_RX)
|
|
#define S2LP_TEST_PIN_RX MBED_CONF_S2LP_TEST_PIN_RX
|
|
#else
|
|
#define S2LP_TEST_PIN_RX D5
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_TEST_PIN_CSMA)
|
|
#define S2LP_TEST_PIN_CSMA MBED_CONF_S2LP_TEST_PIN_CSMA
|
|
#else
|
|
#define S2LP_TEST_PIN_CSMA D4
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_TEST_PIN_SPARE_1)
|
|
#define S2LP_TEST_PIN_SPARE_1 MBED_CONF_S2LP_TEST_PIN_SPARE_1
|
|
#else
|
|
#define S2LP_TEST_PIN_SPARE_1 D2
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_TEST_PIN_SPARE_2)
|
|
#define S2LP_TEST_PIN_SPARE_2 MBED_CONF_S2LP_TEST_PIN_SPARE_2
|
|
#else
|
|
#define S2LP_TEST_PIN_SPARE_2 D8
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_GPIO0)
|
|
#define S2LP_SPI_GPIO0 MBED_CONF_S2LP_SPI_GPIO0
|
|
#else
|
|
#define S2LP_SPI_GPIO0 A0
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_GPIO1)
|
|
#define S2LP_SPI_GPIO1 MBED_CONF_S2LP_SPI_GPIO1
|
|
#else
|
|
#define S2LP_SPI_GPIO1 A2
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_GPIO2)
|
|
#define S2LP_SPI_GPIO2 MBED_CONF_S2LP_SPI_GPIO2
|
|
#else
|
|
#define S2LP_SPI_GPIO2 A3
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_SPI_GPIO3)
|
|
#define S2LP_SPI_GPIO3 MBED_CONF_S2LP_SPI_GPIO3
|
|
#else
|
|
#define S2LP_SPI_GPIO3 A5
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_I2C_SDA)
|
|
#define S2LP_I2C_SDA MBED_CONF_S2LP_I2C_SDA
|
|
#else
|
|
#define S2LP_I2C_SDA null
|
|
#endif
|
|
|
|
#if defined(MBED_CONF_S2LP_I2C_SCL)
|
|
#define S2LP_I2C_SCL MBED_CONF_S2LP_I2C_SCL
|
|
#else
|
|
#define S2LP_I2C_SCL null
|
|
#endif
|
|
|
|
#include "at24mac_s2lp.h"
|
|
|
|
class RFPins;
|
|
class TestPins_S2LP;
|
|
|
|
class NanostackRfPhys2lp : public NanostackRfPhy {
|
|
public:
|
|
NanostackRfPhys2lp(PinName spi_sdi, PinName spi_sdo, PinName spi_sclk, PinName spi_cs, PinName spi_sdn
|
|
, PinName spi_gpio0, PinName spi_gpio1, PinName spi_gpio2, PinName spi_gpio3
|
|
#ifdef AT24MAC
|
|
, PinName i2c_sda, PinName i2c_scl
|
|
#endif //AT24MAC
|
|
);
|
|
virtual ~NanostackRfPhys2lp();
|
|
virtual int8_t rf_register();
|
|
virtual void rf_unregister();
|
|
virtual void get_mac_address(uint8_t *mac);
|
|
virtual void set_mac_address(uint8_t *mac);
|
|
|
|
private:
|
|
#ifdef AT24MAC
|
|
AT24Mac_s2lp _mac;
|
|
#endif //AT24MAC
|
|
uint8_t _mac_addr[8];
|
|
RFPins *_rf;
|
|
TestPins_S2LP *_test_pins;
|
|
bool _mac_set;
|
|
|
|
const PinName _spi_sdi;
|
|
const PinName _spi_sdo;
|
|
const PinName _spi_sclk;
|
|
const PinName _spi_cs;
|
|
const PinName _spi_sdn;
|
|
const PinName _spi_gpio0;
|
|
const PinName _spi_gpio1;
|
|
const PinName _spi_gpio2;
|
|
const PinName _spi_gpio3;
|
|
};
|
|
#endif /* MBED_CONF_NANOSTACK_CONFIGURATION && DEVICE_SPI */
|
|
#endif /* NANOSTACK_PHY_S2LP_H_ */
|