BWP-SS19-01/Fein Design/Haupt-Steuerung

Aus Verteilte Systeme - Wiki
Zur Navigation springen Zur Suche springen

Haupt-Steuerung

Der Grund für die verwendete Systemstruktur ist, dass über den Haupt-Thread die einzelnen Modul-Threads über Funktionen angesprochen werden.

Main_Control

Die Haupt-Steuerung (Main_Control.c) definiert einige Funktionen selbst, oder erweitert bestehende Funktionen der einzelnen Module um die Möglichkeit der Energiemessung sowie dem Versenden der Daten über BLE.


Ob das Versenden der Daten erfolgt, ist mit einer symbolischen Konstanten im Main_Interface.h festgelegt, dort befinden sich auch die entsprechenden States der Energiemessung :

/* If DEBUG_MODE is on, every function call sends a message via BLE */
#define DEBUG_MODE 1

#define ENERGY_STATE_NONE 0
#define ENERGY_STATE_FORWARD 1
#define ENERGY_STATE_BACKWARD 2
#define ENERGY_STATE_TURN     3
#define ENERGY_STATE_BLE_SEND 4
#define ENERGY_STATE_DEEP_SLEEP 5
#define ENERGY_STATE_BATTERY_LEVEL 6
#define ENERGY_STATE_INCOME 7
#define ENERGY_STATE_CONSUMPTION 8
#define ENERGY_STATE_ENERGY_RESET 9
#define ENERGY_STATE_ODOM_MEASURING 10

Die folgenden Funktionen des Energy-Managements werden hier definiert und interagieren mit dem Modul:

// go into deep sleep
void Energy_deepSleep(int minutes);

// get current battery level in miliAmpere
int Get_BatteryLevel_from_Module(int usage);

// get current income
int Get_CurIncome(void);

// get current consumption
int Get_CurConsumption(void);

// Energy Management Modul Reset
int energy_management_reset(void);

Interne Funktionen der Main_Control mit Bezug auf das Energy-Management:

// function to print all energy values
void print_energy_values(void);

// calculate current battery level in percentage and returns status
int cur_battery_leveltest(void);

Die erweiterten Funktionen der Odometrie sowie der Engine sind:

// read distance from sensor
odm_sensor_value_t odom_sensor_read();

// drive forward
void odom_forward(int msec);

// drive backwards
void odom_backward(int msec);

// turn right or left
void odom_turn(int msec, int direcction);

Die dabei die jeweiligen Funktionen der Module aufrufen, den State entsprechend setzen (z.B. ENERGY_STATE_FORWARD) und die Daten mit ble_set_data() dem BLE-Modul übergeben, sofern die symbolische Konstante DEBUG_MODE auf 1 gesetzt ist.