osc.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #include <OSCMessage.h>
  2. #include <Ethernet.h>
  3. #include <EthernetUdp.h>
  4. #include <SPI.h>
  5. template <typename TYPE> void sendOSC(const char * adress, TYPE parameter) {
  6. OSCMessage OSCmsg(adress);
  7. OSCmsg.add(parameter);
  8. Udp.beginPacket(outIp, outPort);
  9. OSCmsg.send(Udp); // send the bytes to the SLIP stream
  10. Udp.endPacket(); // mark the end of the OSC Packet
  11. OSCmsg.empty(); // free space occupied by message
  12. }
  13. ///// STEPPER /////////
  14. void init_Stepper_OSC(OSCMessage &msg) {
  15. float maximum = init_Stepper();
  16. sendOSC("/stepper/maxPos",maximum );
  17. }
  18. void moveTo_Stepper_OSC (OSCMessage &msg){
  19. long int distance = moveTo_Stepper(msg.getInt(0));
  20. sendOSC("/stepper/distanceToGo",distance );
  21. }
  22. void move_Stepper_OSC (OSCMessage &msg){
  23. long int distance = move_Stepper(msg.getInt(0));
  24. sendOSC("/stepper/distanceToGo",distance );
  25. }
  26. void moveToCm_Stepper_OSC (OSCMessage &msg){
  27. long int distance = moveToCm_Stepper(msg.getFloat(0));
  28. sendOSC("/stepper/distanceToGo/cm",distance );
  29. }
  30. void moveCm_Stepper_OSC (OSCMessage &msg){
  31. long int distance = moveCm_Stepper(msg.getFloat(0));
  32. sendOSC("/stepper/distanceToGo/cm",distance );
  33. }
  34. void maxSpeed_Stepper (OSCMessage &msg){
  35. long int max_speed = maxSpeed_Stepper(msg.getInt(0));
  36. sendOSC("/stepper/maxSpeed",max_speed );
  37. }
  38. void acceleration_Stepper (OSCMessage &msg){
  39. long int acceleration = acceleration_Stepper(msg.getInt(0));
  40. sendOSC("/stepper/acceleration",acceleration );
  41. ////// OSC DECLARATIONS /////////
  42. void setup_OSC(){
  43. OSCMessage OSCmsg("/connected");
  44. }
  45. void handleOSCIn() {
  46. // //check ethernet connection periodically
  47. // if ( millis() - ethernetTestTimer > 5000 ) {
  48. // ethernetTestTimer = millis() ;
  49. // //Serial.println(Ethernet.maintain());
  50. // }
  51. //define OSC message to function relationships
  52. OSCMessage OSCin;
  53. int size;
  54. if ( (size = Udp.parsePacket()) > 0) {
  55. while (size--)
  56. OSCin.fill(Udp.read());
  57. //Declare valid OSC messages here
  58. if (!OSCin.hasError()) {
  59. OSCin.dispatch("/test", printTest);
  60. OSCin.dispatch("/mode", mode_OSC);
  61. //SENSOR
  62. OSCin.dispatch("/sensor/state", sensorState_OSC);
  63. OSCin.dispatch("/sensor/time", sensorTimeOSC);
  64. OSCin.dispatch("/sensor/scale/reset", resetScale_OSC);
  65. OSCin.dispatch("/sensor/scale/current", currentScale_OSC);
  66. //CC MOTOR CONTROL
  67. OSCin.dispatch("/CC/speed", setSpeed_CCMotor_OSC);
  68. OSCin.dispatch("/CC/cs", checkCS_CCMotor_OSC);
  69. //STEPPER CONTROL
  70. OSCin.dispatch("/stepper/init", init_Stepper_OSC);
  71. OSCin.dispatch("/stepper/moveTo", moveTo_Stepper_OSC);
  72. OSCin.dispatch("/stepper/move", move_Stepper_OSC);
  73. OSCin.dispatch("/stepper/moveTo/cm", moveToCm_Stepper_OSC);
  74. OSCin.dispatch("/stepper/move/cm", moveCm_Stepper_OSC);
  75. OSCin.dispatch("/stepper/maxSpeed", maxSpeed_Stepper);
  76. OSCin.dispatch("/stepper/acceleration", acceleration_Stepper);
  77. OSCin.dispatch("/stepper/randomMove", randomMove_Stepper_OSC);
  78. //LEDS
  79. OSCin.dispatch("/led/value", valueLed_OSC);
  80. OSCin.dispatch("/led/sensor", sensorLed_OSC);
  81. OSCin.dispatch("/led/lighting", lightingLed_OSC);
  82. }
  83. }
  84. }