-
Notifications
You must be signed in to change notification settings - Fork 0
/
socket.h
95 lines (75 loc) · 2.07 KB
/
socket.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#ifndef SOCKET_H_INCLUDED
#define SOCKET_H_INCLUDED
#include <stdint.h>
#define DEVICE_ID_INVALID 0
#define DEVICE_ID_SAIL 1
#define DEVICE_ID_HELM 2
#define DEVICE_ID_GPS 3
#define DEVICE_ID_ROLL 4
#define DEVICE_ID_WINDDIR 5
#define DEVICE_ID_COMPASS 6
#define DEVICE_ID_BATTERY 7
#define DEVICE_ID_TURNSPEED 8
struct __attribute__((packed)) Event{
uint8_t id;
uint64_t data[2];
};
/**
@brief Initialisation de la socket
@return 0 si tout c'est bien passé, code d'erreur négatif sinon
**/
int SocketInit();
/**
@brief Ferme proprement la socket
*/
void SocketClose();
/**
@brief Demarre la gestion parallèle des clients
*/
void SocketHandleClients();
/**
@brief Envoi un évènement à l'intelligence
*/
void SocketSendEvent(struct Event ev);
/**
@brief Cette fonction est appelée quand un event est reçu
*/
void SocketHandleReceivedEvent(struct Event ev);
/**
@brief Convertit des données brutes en donnée tension voile (de 0 à 255)
*/
unsigned short ConvertToSailValue(uint64_t data[2]);
/**
@brief Convertit des données brutes en donnée orientation barre (de -45° à 45°)
*/
float ConvertToHelmValue(uint64_t data[2]);
/**
@brief Envoi de la position GPS (2x IEEE-754 64 bit floating point)
@arg latitude en degrés décimaux, entre -90° et 90°
@arg longitude en degrés décimaux, entre -180° et 180°
*/
void SocketSendGps(double latitude, double longitude);
/**
@brief Envoi du roulis (IEEE-754 64 bit floating point)
@arg angle Entre -180° et 180°. 0=bateau droit. 180° étant un cas très fâcheux...
*/
void SocketSendRoll(double angle);
/**
@brief Envoi de la direction du vent (IEEE-754 64 bit floating point)
@arg angle Entre -180° et 180°. 0=vent de face
*/
void SocketSendWindDir(double angle);
/**
@brief Envoi de la direction du compas (IEEE-754 64 bit floating point)
@arg angle Entre 0° et 360°. 0=Nord
*/
void SocketSendCompass(double angle);
/**
@arg voltage Entre 0 et 18 volts
**/
void SocketSendBattery(float voltage);
/**
@arg speed Vitesse de rotation en degrés par seconde
**/
void SocketSendTurnSpeed(float speed);
#endif