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/
Diff: mbedAPI.cpp
- Revision:
- 4:b62b40563944
- Parent:
- 2:908338b1151a
--- a/mbedAPI.cpp Sat May 23 09:14:47 2015 +0000 +++ b/mbedAPI.cpp Sun May 24 21:29:48 2015 +0900 @@ -204,23 +204,23 @@ void mbedAPI::code_method_I2C(int f, mbedObj& obj) { if (f == mbed_read) { - uint16_t a3 = ips.pull_ps(); // addr - uint16_t a2 = ips.pull_ps(); // data length - uint16_t a1 = ips.pull_ps(); // data pointer - char buf[a2]; - reinterpret_cast<I2C*>(obj.p)->read(a3, buf, a1); - for(int i = 0; i < a2; i++) { - ips.pokeB(a1 + i, buf[i]); + uint16_t addr = ips.pull_ps(); + uint16_t len = ips.pull_ps(); + uint16_t ptr = ips.pull_ps(); + char buf[len]; + reinterpret_cast<I2C*>(obj.p)->read(addr, buf, len); + for(int i = 0; i < len; i++) { + ips.pokeB(ptr + i, buf[i]); } } else if (f == mbed_write) { - uint16_t a3 = ips.pull_ps(); // addr - uint16_t a2 = ips.pull_ps(); // data length - uint16_t a1 = ips.pull_ps(); // data pointer - char buf[a2]; - for(int i = 0; i < a2; i++) { - buf[i] = ips.peekB(a1 + i); + uint16_t addr = ips.pull_ps(); + uint16_t len = ips.pull_ps(); + uint16_t ptr = ips.pull_ps(); + char buf[len]; + for(int i = 0; i < len; i++) { + buf[i] = ips.peekB(ptr + i); } - reinterpret_cast<I2C*>(obj.p)->write(a3, buf, a1); + reinterpret_cast<I2C*>(obj.p)->write(addr, buf, len); } else { error("%s %d", __LINE__, f); }