This is test program for RTno for mbed!

Dependencies:   mbed

Revision:
0:f5d842e99c96
--- /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;
+}