IPS(Interpreter for Process Structures) for mbed

Dependencies:   ConfigFile FATFileSystem mbed

IPS port from linux/unix version.

mbed_blinky.ips

0 VAR led1
" LED1 " DigitalOut led1 !
: main
    ANFANG
    1 JA?
      1 led1 @ write
      200 wait_ms
      0 led1 @ write
      200 wait_ms
    DANN/NOCHMAL
;
main
Committer:
va009039
Date:
Sat May 23 16:50:59 2015 +0900
Revision:
2:908338b1151a
add mbedAPI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 2:908338b1151a 1 // mbedAPI.h 2015/5/22
va009039 2:908338b1151a 2 #include "BaseIPS.h"
va009039 2:908338b1151a 3 #include "myvector.h"
va009039 2:908338b1151a 4
va009039 2:908338b1151a 5 struct mbedObj {
va009039 2:908338b1151a 6 void* p;
va009039 2:908338b1151a 7 uint8_t ct;
va009039 2:908338b1151a 8 };
va009039 2:908338b1151a 9
va009039 2:908338b1151a 10 class mbedAPI {
va009039 2:908338b1151a 11 BaseIPS& ips;
va009039 2:908338b1151a 12
va009039 2:908338b1151a 13 public:
va009039 2:908338b1151a 14 mbedAPI(BaseIPS& ips_): ips(ips_) {}
va009039 2:908338b1151a 15 void code();
va009039 2:908338b1151a 16
va009039 2:908338b1151a 17 private:
va009039 2:908338b1151a 18 template<class T>
va009039 2:908338b1151a 19 void init(int ct) {
va009039 2:908338b1151a 20 push_ps_obj(new T(), ct);
va009039 2:908338b1151a 21 }
va009039 2:908338b1151a 22
va009039 2:908338b1151a 23 template<class T, typename A1>
va009039 2:908338b1151a 24 void init(int ct) {
va009039 2:908338b1151a 25 A1 a1 = pull_ps<A1>();
va009039 2:908338b1151a 26 push_ps_obj(new T(a1), ct);
va009039 2:908338b1151a 27 }
va009039 2:908338b1151a 28
va009039 2:908338b1151a 29 template<class T, typename A1, typename A2>
va009039 2:908338b1151a 30 void init(int ct) {
va009039 2:908338b1151a 31 A2 a2 = pull_ps<A2>();
va009039 2:908338b1151a 32 A1 a1 = pull_ps<A1>();
va009039 2:908338b1151a 33 push_ps_obj(new T(a1, a2), ct);
va009039 2:908338b1151a 34 }
va009039 2:908338b1151a 35
va009039 2:908338b1151a 36 template<class T, typename A1, typename A2, typename A3>
va009039 2:908338b1151a 37 void init(int ct) {
va009039 2:908338b1151a 38 A3 a3 = pull_ps<A3>();
va009039 2:908338b1151a 39 A2 a2 = pull_ps<A2>();
va009039 2:908338b1151a 40 A1 a1 = pull_ps<A1>();
va009039 2:908338b1151a 41 push_ps_obj(new T(a1, a2, a3), ct);
va009039 2:908338b1151a 42 }
va009039 2:908338b1151a 43
va009039 2:908338b1151a 44 template<class T, void(T::*member)()>
va009039 2:908338b1151a 45 void method(void* obj) {
va009039 2:908338b1151a 46 (reinterpret_cast<T*>(obj)->*member)();
va009039 2:908338b1151a 47 }
va009039 2:908338b1151a 48
va009039 2:908338b1151a 49 template<class T, typename A1, void(T::*member)(A1)>
va009039 2:908338b1151a 50 void method(void* obj) {
va009039 2:908338b1151a 51 A1 a1 = ips.pull_ps();
va009039 2:908338b1151a 52 (reinterpret_cast<T*>(obj)->*member)(a1);
va009039 2:908338b1151a 53 }
va009039 2:908338b1151a 54
va009039 2:908338b1151a 55 template<typename R, class T, R(T::*member)()>
va009039 2:908338b1151a 56 void method(void* obj) {
va009039 2:908338b1151a 57 ips.push_ps((reinterpret_cast<T*>(obj)->*member)());
va009039 2:908338b1151a 58 }
va009039 2:908338b1151a 59
va009039 2:908338b1151a 60 template<typename R, class T, typename A1, R(T::*member)(A1)>
va009039 2:908338b1151a 61 void method(void* obj) {
va009039 2:908338b1151a 62 A1 a1 = ips.pull_ps();
va009039 2:908338b1151a 63 ips.push_ps((reinterpret_cast<T*>(obj)->*member)(a1));
va009039 2:908338b1151a 64 }
va009039 2:908338b1151a 65
va009039 2:908338b1151a 66 template<typename T>
va009039 2:908338b1151a 67 PinName pull_ps();
va009039 2:908338b1151a 68
va009039 2:908338b1151a 69 void code_method(int f);
va009039 2:908338b1151a 70 void code_method_I2C(int f, mbedObj& obj);
va009039 2:908338b1151a 71 mbedObj pull_ps_obj();
va009039 2:908338b1151a 72 void push_ps_obj(void*, int ct);
va009039 2:908338b1151a 73 void pull_ps_string(char* buf, size_t size);
va009039 2:908338b1151a 74 PinName findPinName(const char* name) const;
va009039 2:908338b1151a 75 myvector<mbedObj> objs;
va009039 2:908338b1151a 76 };
va009039 2:908338b1151a 77
va009039 2:908338b1151a 78