source: arduino-1-6-7/trunk/fuentes/arduino-ide-amd64/libraries/SpacebrewYun/src/SpacebrewYun.h @ 46

Last change on this file since 46 was 46, checked in by jrpelegrina, 4 years ago

First release to Xenial

File size: 3.2 KB
Line 
1
2#ifndef YUNSPACEBREW_H
3#define YUNSPACEBREW_H
4
5#include "Arduino.h"
6#include <Bridge.h>
7#include <Console.h>
8#include <Process.h>
9
10enum SBmsg { 
11        CONNECTION_START = char(28), 
12        CONNECTION_END = char(27), 
13        CONNECTION_ERROR = char(26), 
14        MSG_CONFIRM = char(7), 
15        MSG_START = char(29), 
16        MSG_DIV = char(30), 
17        MSG_END = char(31) 
18};
19
20struct Publisher {
21        char *name;
22        char *type;
23        char *lastMsg;
24        Publisher *next;
25        int confirmed;
26        long time;
27};
28
29struct Subscriber{
30        char *name;
31        char *type;
32        Subscriber *next;
33};
34
35int const pidLength = 6;
36int const sbPidsLen = 4;
37
38class SpacebrewYun {
39
40        public:
41
42                SpacebrewYun(const String&, const String&);
43                void addPublish(const String&, const String&);
44                void addSubscribe(const String&, const String&);
45
46                void connect(String, int);
47                void connect() { connect(server, port); };
48                void connect(String _server) { connect(String(_server), port); };
49
50                void monitor();
51                void onMessage();
52                void onConfirm();
53
54                boolean connected();
55
56                void send(const String&, const String&);
57                void send(const String& name, char * value) { send(name, String(value)); }
58                void send(const String& name, bool value){ send(name, (value ? String("true") : String("false"))); };
59                void send(const String& name, int value) { send(name, String(value)); };
60                void send(const String& name, long value) { send(name, String(value)); };
61                void send(const String& name, float value) { send(name, String(value)); };
62
63                void verbose(boolean);
64
65                typedef void (*OnBooleanMessage)(String name, boolean value);
66                typedef void (*OnRangeMessage)(String name, int value);
67                typedef void (*OnStringMessage)(String name, String value);
68                typedef void (*OnCustomMessage)(String name, String value, String type);
69                typedef void (*OnSBOpen)();
70                typedef void (*OnSBClose)();
71                typedef void (*OnSBError)(int code, String message);
72
73                void onOpen(OnSBOpen function);
74                void onClose(OnSBClose function);
75                void onRangeMessage(OnRangeMessage function);
76                void onStringMessage(OnStringMessage function);
77                void onBooleanMessage(OnBooleanMessage function);
78                void onCustomMessage(OnCustomMessage function);
79                void onError(OnSBError function);
80
81        private:
82
83                Process brew;
84                String name;
85                String server;
86                String description;
87                boolean _started;
88                boolean _connected;
89                boolean _error_msg;
90                boolean _verbose;
91                int port;
92
93                /**Output should be at least 5 cells**/
94                static OnBooleanMessage _onBooleanMessage;
95                static OnRangeMessage _onRangeMessage;
96                static OnStringMessage _onStringMessage;
97                static OnCustomMessage _onCustomMessage;
98                static OnSBOpen _onOpen;
99                static OnSBClose _onClose;
100                static OnSBError _onError;
101
102                Subscriber * subscribers;
103                Publisher * publishers;
104                String sub_name;
105                String sub_msg;
106                String sub_type;
107
108                boolean read_name;
109                boolean read_msg;
110                boolean read_confirm;
111                static int sub_name_max;
112                static int sub_msg_str_max;
113                static int sub_msg_int_max;
114                static int sub_msg_bool_max;
115
116                long connect_attempt;
117                int connect_attempt_inter;
118
119                Process pids;
120                char pid [6];
121                int sbPids [4];
122
123                void killPids();
124                void getPids();
125
126                static char * createString(int len){
127                        char * out = ( char * ) malloc ( len + 1 );
128                        return out;
129                }               
130
131                static void emptyString(char * str, int len){
132                        for (int i = 0; i < len; i++) {
133                                str[i] = '\0';
134                        }
135                }
136
137};
138
139#endif
Note: See TracBrowser for help on using the repository browser.