Statistics
| Branch: | Revision:

brix5 / firmware / sliposc / SerialSendBundle / SerialSendBundle.ino @ master

History | View | Annotate | Download (1.763 KB)

1
// vim:ts=2:sw=2:expandtab
2
// OSC Lib Example for w/ and w/o timetag
3

    
4
/*
5
    Make an OSC bundle and send it over SLIP serial
6

    
7
    OSCBundles allow OSCMessages to be grouped together to  preserve the order and completeness of related messages.
8
    They also allow for timetags to be carried to represent the presentation time of the messages.
9
*/
10
#include "OSC/OSCBundle.h"
11
#include "OSC/OSCBoards.h"
12
#include "OSC/OSCTiming.h"
13

    
14
#ifdef BOARD_HAS_USB_SERIAL
15
#include <SLIPEncodedUSBSerial.h>
16
SLIPEncodedUSBSerial SLIPSerial( thisBoardsSerialUSB );
17
#else
18
#include <SLIPEncodedSerial.h>
19
 SLIPEncodedSerial SLIPSerial(Serial1);
20
#endif
21

    
22

    
23
void setup() {
24
  //begin SLIPSerial just like Serial
25
    SLIPSerial.begin(9600);   // set this as high as you can reliably run on your platform
26
#if ARDUINO >= 100
27
    while(!Serial)
28
      ;   // Leonardo bug
29
#endif
30

    
31
}
32

    
33
void loop(){
34
    //declare the bundle
35
    OSCBundle bndl;
36
    osctime_t timetag;
37
    
38
    //OSCBundle's add' returns the OSCMessage so the message's 'add' can be composed together
39
    
40
    // with timetag
41
    bndl.add("/analog/0").add((int32_t)adcRead(0, &timetag));
42
    bndl.add("/analog/0/time").add(timetag);
43
    
44
    bndl.add("/analog/1").add((int32_t)adcRead(1, &timetag));
45
    bndl.add("/analog/1/time").add(timetag);
46
   
47
    bndl.add("/digital/5").add((digitalRead(5)==HIGH)?"HIGH":"LOW");
48

    
49

    
50
    bndl.add("/analog/2").add((int32_t)analogRead(2));
51
    bndl.add("/analog/3").add((int32_t)analogRead(3));
52
    bndl.add("/digital/4").add((digitalRead(4)==HIGH)?"HIGH":"LOW");
53

    
54
    SLIPSerial.beginPacket();
55
    bndl.setTimetag(oscTime());
56
        bndl.send(SLIPSerial); // send the bytes to the SLIP stream
57
    SLIPSerial.endPacket(); // mark the end of the OSC Packet
58
    bndl.empty(); // empty the bundle to free room for a new one
59

    
60
    delay(100);
61
}