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
- ips-02.tgz - ips for linux/unix
- ipsdoc.zip - document
- https://bitbucket.org/va009039/ips/
mbedAPI.h@4:b62b40563944, 2015-05-24 (annotated)
- Committer:
- va009039
- Date:
- Sun May 24 21:29:48 2015 +0900
- Revision:
- 4:b62b40563944
- Parent:
- 2:908338b1151a
fix I2C
Who changed what in which revision?
User | Revision | Line number | New 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 |