Bibliotheques TP RT  1.0
Bibliotheque de support pour TP/RT
monitor.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #include "monitor.h"
27 #include "server.h"
28 
29 using namespace std;
30 
33 socklen_t recsize = sizeof (ssin);
34 
35 
36 string serverReceive(int size);
37 int sendMessage(const char *data, int dataLength);
38 int receive(char *data);
39 
40 int send_message_to_monitor(const char* typeMessage, const void * data) {
41  if ((string) typeMessage == HEADER_STM_IMAGE) {
42  Jpg * imgC = (Jpg*) data;
43  sendMessage("IMG", 3);
44  sendMessage((const char*) imgC->data(), imgC->size());
45  sendMessage("TRAME", 5);
46  return 0;
47  } else if ((string) typeMessage == HEADER_STM_POS) {
48  char buffer[400];
49  Position * maPosition = (Position*) data;
50  sprintf(buffer, "POScenter: %3d;%3d | %.1fTRAME", maPosition->center.x, maPosition->center.y, maPosition->angle);
51  sendMessage(buffer, strlen(buffer));
52  return 0;
53  } else if ((string) typeMessage == HEADER_STM_MES) {
54  char buffer[50];
55  sprintf(buffer, "MSG%sTRAME", (const char*) data);
56  sendMessage(buffer, strlen(buffer));
57  return 0;
58  } else if ((string) typeMessage == HEADER_STM_ACK) {
59  char buffer[50];
60  sprintf(buffer, "ACK%sTRAME", (const char*) data);
61  sendMessage(buffer, strlen(buffer));
62  return 0;
63  } else if ((string) typeMessage == HEADER_STM_BAT) {
64  char buffer[50];
65  sprintf(buffer, "BAT%sTRAME", (const char*) data);
66  sendMessage(buffer, strlen(buffer));
67  return 0;
68  } else if ((string) typeMessage == HEADER_STM_NO_ACK) {
69  char buffer[50];
70  sprintf(buffer, "NAK%sTRAME", (const char*) data);
71  sendMessage(buffer, strlen(buffer));
72  return 0;
73  } else if ((string) typeMessage == HEADER_STM_LOST_DMB) {
74  char buffer[50];
75  sprintf(buffer, "LCD%sTRAME", (const char*) data);
76  sendMessage(buffer, strlen(buffer));
77  return 0;
78  } else {
79  return -1;
80  }
81 }
82 
83 int receive_message_from_monitor(char *typeMessage, char *data) {
84  char buffer[20];
85  int tBuffer = receive(buffer);
86  sscanf(buffer, "%3s:%s", typeMessage, data);
87  return tBuffer;
88 }
89 
90 int receive(char *data) {
91  int result;
92  result = receiveDataFromServer(data, 20);
93  //cout <<"Data : " << data << endl;
94  return result;
95 }
96 
97 int sendMessage(const char *data, int dataLength) {
98  if (sendDataToServer((char*) data, dataLength) != dataLength) {
99  perror("Send failed : ");
100  return false;
101  }
102 
103  return true;
104 }
Point center
Definition: image.h:70
#define HEADER_STM_POS
Definition: monitor.h:43
float angle
Definition: image.h:72
int receive(char *data)
Definition: monitor.cpp:90
int SOCKET
Definition: monitor.h:70
#define HEADER_STM_NO_ACK
Definition: monitor.h:44
#define HEADER_STM_ACK
Definition: monitor.h:45
int receive_message_from_monitor(char *typeMessage, char *data)
Réception d&#39;un message. La fonction est bloquante et retourne par référence le type de message reçu (...
Definition: monitor.cpp:83
int send_message_to_monitor(const char *typeMessage, const void *data)
Envoi d&#39;un message vers l&#39;interface graphique.
Definition: monitor.cpp:40
#define HEADER_STM_LOST_DMB
Definition: monitor.h:47
#define HEADER_STM_BAT
Definition: monitor.h:42
socklen_t recsize
Definition: monitor.cpp:33
Definition: image.h:69
SOCKADDR_IN ssin
Definition: monitor.cpp:31
int sendMessage(const char *data, int dataLength)
Definition: monitor.cpp:97
vector< unsigned char > Jpg
Definition: image.h:67
int receiveDataFromServer(char *data, int size)
Definition: server.cpp:95
#define HEADER_STM_MES
Definition: monitor.h:46
int sendDataToServer(char *data, int length)
Definition: server.cpp:85
SOCKET sock
Definition: monitor.cpp:32
struct sockaddr_in SOCKADDR_IN
Definition: monitor.h:71
Library for sending message to monitor or receiving message.
string serverReceive(int size)
#define HEADER_STM_IMAGE
Definition: monitor.h:41