C027_SupportTest_xively_locationで使用しているC027用ライブラリ
Fork of C027_Support by
下記のプログラムC027_SupportTest_xively_locationで使用しているC027用ライブラリです。
Import programC027_SupportTest_xively_location
インターフェース2014年10月号のu-blox C027で3G通信する記事で使用したプログラム。 CQ publishing Interface 2014.10 issue, C027 3G test program.
オリジナルのライブラリは下記を参照してください。
Import libraryC027_Support
support library for C027 helper functions for Buffer Pipes, Buffered Serial Port (rtos capable) and GPS parsing. It includes modem APIs for USSD, SMS and Sockets.
Diff: SerialPipe.cpp
- Revision:
- 18:e5697801df29
- Parent:
- 17:296d94a006b4
- Child:
- 19:2b5d097ca15d
--- a/SerialPipe.cpp Fri Jan 31 09:49:51 2014 +0000 +++ b/SerialPipe.cpp Fri Mar 14 13:07:48 2014 +0000 @@ -102,73 +102,3 @@ } } -// ----------------------------------------------------------------------- - -int SerialPipeEx::getLine(char* buffer, int length) -{ - return getLine(buffer, length, &_pipeRx); -} - -int SerialPipeEx::getLine(char* buffer, int length, Pipe<char>* pipe) -{ - int o = 0; - int i = 0; - int l = pipe->start(); - while ((i < l) && (o < length)) - { - int t = pipe->next(); - i ++; - if (t == '\r') // terminate commands with carriage return - { - pipe->done(); - if (length > o) - buffer[o] = '\0'; - return o; // if enter send the zero char - } - else if (t == '\n') // skip/filter new line - /* skip */; - else if (t != '\b') // normal char (no backspace) - buffer[o++] = t; - else if (o > 0) // backspace - o --; // remove it - } - o = 0; - if (length > 0) - buffer[0] = '\0'; - return WAIT; -} - -int SerialPipeEx::getResp(char* buffer, int length) -{ - return getResp(buffer, length, &_pipeRx); -} - -int SerialPipeEx::getResp(char* buffer, int length, Pipe<char>* pipe) -{ - int o = 0; - int i = 0; - int l = pipe->start(); - static const char erTxt[] = "ERROR\r\n"; - static const char okTxt[] = "OK\r\n"; - int er = 0; - int ok = 0; - while ((i < pipe->size()) && (o < length)) - { - int t = pipe->next(); - i ++; - buffer[o++] = t; - ok = (t == okTxt[ok]) ? ok + 1 : 0; - er = (t == erTxt[er]) ? er + 1 : 0; - if ((okTxt[ok] == '\0') || (erTxt[er] == '\0')) - { - pipe->done(); - if (length > o) - buffer[o] = '\0'; - return o; - } - } - o = 0; - if (length > 0) - buffer[0] = '\0'; - return WAIT; -}