Skip to content
Snippets Groups Projects
Select Git revision
  • 4f9ebade608e805f0f35e81cd0372d3afdafb900
  • wip-bootstrap default
  • dualcore
  • ch3/leds
  • ch3/time
  • master
6 results

Makefile

Blame
    • Paul Sokolovsky's avatar
      4f9ebade
      modtermios: Add "termios" unix module, subset of CPython's. · 4f9ebade
      Paul Sokolovsky authored
      Also provides setraw() function from "tty" module (which in CPython is
      implemented in Python). The idea here is that 95% of "termios" module usage
      is to set raw mode to allow access to normal serial devices. Then, instead
      of exporting gazillion termios symbols, it's better to implement it in C,
      and export minimal number of symbols (mostly baud rates and drain values).
      4f9ebade
      History
      modtermios: Add "termios" unix module, subset of CPython's.
      Paul Sokolovsky authored
      Also provides setraw() function from "tty" module (which in CPython is
      implemented in Python). The idea here is that 95% of "termios" module usage
      is to set raw mode to allow access to normal serial devices. Then, instead
      of exporting gazillion termios symbols, it's better to implement it in C,
      and export minimal number of symbols (mostly baud rates and drain values).
    modules.h 3.50 KiB
    #ifndef MODULES_H
    #define MODULES_H
    
    #include "FreeRTOS.h"
    #include "semphr.h"
    #include "gpio.h"
    
    #include <stdint.h>
    #include <stdbool.h>
    
    /* ---------- Dispatcher --------------------------------------------------- */
    void vApiDispatcher(void *pvParameters);
    void dispatcher_mutex_init(void);
    extern SemaphoreHandle_t api_mutex;
    extern TaskHandle_t dispatcher_task_id;
    
    /* ---------- Hardware Init & Reset ---------------------------------------- */
    int hardware_early_init(void);
    int hardware_init(void);
    int hardware_reset(void);
    
    /* ---------- Lifecycle ---------------------------------------------------- */
    void vLifecycleTask(void *pvParameters);
    void return_to_menu(void);
    
    /* ---------- Serial ------------------------------------------------------- */
    #define SERIAL_READ_BUFFER_SIZE 128
    #define SERIAL_WRITE_STREAM_BUFFER_SIZE 512
    void serial_init();
    void vSerialTask(void *pvParameters);
    void serial_enqueue_char(char chr);
    void serial_flush(void);
    extern TaskHandle_t serial_task_id;
    
    // For the eSetBit xTaskNotify task semaphore trigger
    enum serial_notify{
          SERIAL_WRITE_NOTIFY = 0x01,
          SERIAL_READ_NOTIFY  = 0x02,
    };
    
    /* ---------- LED Animation / Personal States ------------------------------ */
    #define PERSONAL_STATE_LED 14
    void vLedTask(void *pvParameters);
    int personal_state_enabled();
    
    /* ---------- PMIC --------------------------------------------------------- */
    void vPmicTask(void *pvParameters);
    
    /* ---------- Watchdog ----------------------------------------------------- */
    void watchdog_init();
    void watchdog_clearer_init();
    
    /* Critical battery voltage */
    #define BATTERY_CRITICAL   3.40f
    
    enum pmic_amux_signal {
    	PMIC_AMUX_DISABLED    = 0x0,
    	PMIC_AMUX_CHGIN_U     = 0x1,
    	PMIC_AMUX_CHGIN_I     = 0x2,
    	PMIC_AMUX_BATT_U      = 0x3,
    	PMIC_AMUX_BATT_CHG_I  = 0x4,
    	PMIC_AMUX_BATT_DIS_I  = 0x5,
    	PMIC_AMUX_BATT_NULL_I = 0x6,
    	PMIC_AMUX_THM_U       = 0x7,
    	PMIC_AMUX_TBIAS_U     = 0x8,
    	PMIC_AMUX_AGND_U      = 0x9,
    	PMIC_AMUX_SYS_U       = 0xA,
    	_PMIC_AMUX_MAX,
    };
    
    /*
     * Read a value from the PMIC's AMUX.  The result is already converted into its
     * proper unit.  See the MAX77650 datasheet for details.
     */
    int pmic_read_amux(enum pmic_amux_signal sig, float *result);
    
    
    /* ---------- BLE ---------------------------------------------------------- */
    void vBleTask(void *pvParameters);
    bool ble_shall_start(void);
    void ble_uart_write(uint8_t *pValue, uint8_t len);
    
    /* ---------- Hardware (Peripheral) Locks ---------------------------------- */
    void hwlock_init(void);
    
    enum hwlock_periph {
    	HWLOCK_I2C = 0,
    	HWLOCK_ADC,
    	HWLOCK_LED,
    	HWLOCK_SPI_ECG,
    	_HWLOCK_MAX,
    };
    
    int hwlock_acquire(enum hwlock_periph p, TickType_t wait);
    int hwlock_release(enum hwlock_periph p);
    
    /* ---------- Display ------------------------------------------------------ */
    /* Forces an unlock of the display. Only to be used in Epicardium */
    void disp_forcelock();
    
    /* ---------- BHI160 ------------------------------------------------------- */
    #define BHI160_FIFO_SIZE             128
    #define BHI160_MUTEX_WAIT_MS          50
    void vBhi160Task(void *pvParameters);
    
    /* ---------- MAX30001 ----------------------------------------------------- */
    #define MAX30001_MUTEX_WAIT_MS          50
    void vMAX30001Task(void *pvParameters);
    void max30001_mutex_init(void);
    
    /* ---------- GPIO --------------------------------------------------------- */
    #define MAX30001_MUTEX_WAIT_MS          50
    extern gpio_cfg_t gpio_configs[];
    
    
    /* ---------- Sleep -------------------------------------------------------- */
    void sleep_deepsleep(void);
    #endif /* MODULES_H */