This is test program for RTno for mbed!

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
ysuga
Date:
Thu Dec 22 14:54:29 2011 +0000
Commit message:
RTno Test v2.0

Changed in this revision

RTno.lib Show annotated file Show diff for this revision Revisions of this file
RTnoLEDTest.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RTno.lib	Thu Dec 22 14:54:29 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/ysuga/code/RTno/#87b81c10af36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RTnoLEDTest.cpp	Thu Dec 22 14:54:29 2011 +0000
@@ -0,0 +1,214 @@
+#include "mbed.h"
+
+DigitalOut myled(LED1);
+
+
+/**
+ * RTno_Template.pde
+ * RTno is RT-middleware and arduino.
+ *
+ * Using RTno, arduino device can communicate any RT-components 
+ *  through the RTno-proxy component which is launched in PC.
+ * Connect arduino with USB, and program with RTno library.
+ * You do not have to define any protocols to establish communication
+ *  between arduino and PC.
+ *
+ * Using RTno, you must not define the function "setup" and "loop".
+ * Those functions are automatically defined in the RTno libarary.
+ * You, developers, must define following functions:
+ *  int onInitialize(void);
+ *  int onActivated(void);
+ *  int onDeactivated(void);
+ *  int onExecute(void);
+ *  int onError(void);
+ *  int onReset(void);
+ * These functions are spontaneously called by the RTno-proxy
+ *  RT-component which is launched in the PC.
+ * @author Yuki Suga
+ * This code is written/distributed for public-domain.
+ */
+
+#include <RTno.h>
+
+/**
+ * This function is called at first.
+ * conf._default.baudrate: baudrate of serial communication
+ * exec_cxt.periodic.type: reserved but not used.
+ */
+void rtcconf(void) {
+  conf._default.connection_type = ConnectionTypeSerial1;
+  // conf._default.connection_type = ConnectionTypeSerial2; // This configuration is avaiable in Arduino-Mega
+  // conf._default.connection_type = ConnectionTypeSerial3; // This configuration is avaiable in Arduino-Mega
+  conf._default.baudrate = 57600;
+  exec_cxt.periodic.type = ProxySynchronousExecutionContext;
+  // exec_cxt.periodic.type = Timer1ExecutionContext; // onExecute is called by Timer1. Period must be specified by 'rate' option.
+  // *caution: TimerOne can not be used with PWM 9, 10.
+  // exec_cxt.periodic.rate = 1000; // [Hz] This option is indispensable when type is Timer*ExecutionContext.
+}
+
+
+/** 
+ * Declaration Division:
+ *
+ * DataPort and Data Buffer should be placed here.
+ *
+ * available data types are as follows:
+ * TimedLong
+ * TimedDouble
+ * TimedFloat
+ * TimedLongSeq
+ * TimedDoubleSeq
+ * TimedFloatSeq
+ *
+ * Please refer following comments. If you need to use some ports,
+ * uncomment the line you want to declare.
+ **/
+//TimedLong in0;
+//InPort in0In("in0", in0);
+//TimedLongSeq in0;
+//InPort in0In("in0", in0);
+
+//TimedLong out0;
+//OutPort out0Out("out0", out0);
+//TimedLongSeq out0;
+//OutPort out0Out("out0", out0);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+//////////////////////////////////////////
+// on_initialize
+//
+// This function is called in the initialization
+// sequence. The sequence is triggered by the
+// PC. When the RTnoRTC is launched in the PC,
+// then, this function is remotely called
+// through the USB cable.
+// In on_initialize, usually DataPorts are added.
+//
+//////////////////////////////////////////
+int RTno::onInitialize() {
+  /* Data Ports are added in this section.
+  addInPort(in0In);
+  addInPort(in1In);
+  addOutPort(out0Out);
+  addOutPort(out1Out);
+  */
+  led1 = 1;
+  led2 = 0;
+  led3 = 0;
+  led4 = 0;
+  
+  // Some initialization (like port direction setting)
+  // int LED = 13;
+  // pinMode(LED, OUTPUT);
+  return RTC_OK; 
+}
+
+////////////////////////////////////////////
+// on_activated
+// This function is called when the RTnoRTC
+// is activated. When the activation, the RTnoRTC
+// sends message to call this function remotely.
+// If this function is failed (return value 
+// is RTC_ERROR), RTno will enter ERROR condition.
+////////////////////////////////////////////
+int RTno::onActivated() {
+  // Write here initialization code.
+  led2 = 1;
+  led3 = 0;
+  led4 = 0;
+  return RTC_OK; 
+}
+
+/////////////////////////////////////////////
+// on_deactivated
+// This function is called when the RTnoRTC
+// is deactivated.
+/////////////////////////////////////////////
+int RTno::onDeactivated()
+{
+  // Write here finalization code.
+  led2 = 0;
+  led3 = 0;
+  led4 = 0;
+  return RTC_OK;
+}
+
+//////////////////////////////////////////////
+// This function is repeatedly called when the 
+// RTno is in the ACTIVE condition.
+// If this function is failed (return value is
+// RTC_ERROR), RTno immediately enter into the 
+// ERROR condition.r
+//////////////////////////////////////////////
+int RTno::onExecute() {
+  static int flag;
+  if(flag) {
+    led2 = 1;
+    flag = 0;
+  } else {
+    led2 = 0;
+    flag++;
+  }
+  /**
+   * Usage of InPort with premitive type.
+  if(in0In.isNew()) {
+    in0In.read();
+    long data = in0.data;
+  } 
+  */
+  
+  /**
+   * Usage of InPort with sequence type
+  if(in0In.isNew(&in1In)) {
+    in0In.read();
+    for(int i = 0;i < in0.data.length;i++) {
+      long data_buffer = in0.data[i];
+    }
+  }
+  */
+  
+  /**
+   * Usage of OutPort with primitive type.
+  out0.data = 3.14159;
+  out0Out.write();
+  */
+  
+  /**
+   * Usage of OutPort with sequence type.
+  out0.data.length(3);
+  out0.data[0] = 1.1;
+  out0.data[1] = 2.2;
+  out0.data[2] = 3.3;
+  out0Out.write();
+  */
+    
+  return RTC_OK; 
+}
+
+
+//////////////////////////////////////
+// on_error
+// This function is repeatedly called when
+// the RTno is in the ERROR condition.
+// The ERROR condition can be recovered,
+// when the RTno is reset.
+///////////////////////////////////////
+int RTno::onError()
+{
+  return RTC_OK;
+}
+
+////////////////////////////////////////
+// This function is called when 
+// the RTno is reset. If on_reset is
+// succeeded, the RTno will enter into
+// the INACTIVE condition. If failed 
+// (return value is RTC_ERROR), RTno
+// will stay in ERROR condition.ec
+///////////////////////////////////////
+int RTno::onReset()
+{
+  return RTC_OK;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Dec 22 14:54:29 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/078e4b97a13e