/*
 * Copyright (c) 2021, Erich Styger
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#ifndef PLATFORM_H_
#define PLATFORM_H_

/* platform configuration macros: turn on to enable functionality */
#define PL_CONFIG_USE_BLINKY       (1)  /*!< if using blinky LED */
#define PL_CONFIG_USE_WIFI         (1)  /*!< if using WiFi/WLAN */
#define PL_CONFIG_USE_IDENTIFY     (1 && PL_CONFIG_USE_WIFI)  /*!< used to identify ESP32 and robot, needed for EEE network */
#define PL_CONFIG_USE_UDP_SERVER   (0 && PL_CONFIG_USE_WIFI) /*!< UDP server, used for communication to robot */
#define PL_CONFIG_USE_UDP_CLIENT   (0 && PL_CONFIG_USE_WIFI) /*!< UDP client, optionally available for tests */
#define PL_CONFIG_USE_PING         (1 && PL_CONFIG_USE_WIFI) /*!< shell command with ping, to test network connection */

#define PL_CONFIG_USE_SHELL        (1) /*!< implements shell between robot and ESP32 */
#define PL_CONFIG_USE_RS485        (0) /*!< ESP32 using RS-485 to split-flaps */
#define PL_CONFIG_USE_SNTP_TIME    (0 && PL_CONFIG_USE_WIFI)
#define PL_CONFIG_USE_TIME_DATE    (1) /*!< if using Time and Date information */
#define PL_CONFIG_USE_ROBO_REMOTE  (0 && PL_CONFIG_USE_UDP_SERVER) /* UDP Remote controller for robot */

/*! \brief Module and platform initialization */
void PL_Init(void);

/* the following ones are not implemented yet: */
#define PL_CONFIG_USE_I2C          (0)
#define PL_CONFIG_USE_NVMC         (0)
#define PL_CONFIG_USE_WDT          (0) /* NYI */

#endif /* PLATFORM_H_ */
