first versione of ThingSpeak IOT library (not tested)

Committer:
mbedakhela
Date:
Fri Apr 04 13:44:43 2014 +0000
Revision:
0:92f5363c7790
first version of thingspeak IOT library; not tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedakhela 0:92f5363c7790 1 /* **************************************************************************
mbedakhela 0:92f5363c7790 2 *
mbedakhela 0:92f5363c7790 3 *
mbedakhela 0:92f5363c7790 4 *
mbedakhela 0:92f5363c7790 5 *
mbedakhela 0:92f5363c7790 6 * **************************************************************************
mbedakhela 0:92f5363c7790 7 * FileName: parse.c
mbedakhela 0:92f5363c7790 8 * Dependencies:
mbedakhela 0:92f5363c7790 9 * Module:
mbedakhela 0:92f5363c7790 10 * Compiler:
mbedakhela 0:92f5363c7790 11 *
mbedakhela 0:92f5363c7790 12 * Author Rev. Date Comment
mbedakhela 0:92f5363c7790 13 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 14 * Stefano Lai 1.0 03/27/2014 First release
mbedakhela 0:92f5363c7790 15 *
mbedakhela 0:92f5363c7790 16 *
mbedakhela 0:92f5363c7790 17 *
mbedakhela 0:92f5363c7790 18 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 19 *
mbedakhela 0:92f5363c7790 20 * Software License Agreement
mbedakhela 0:92f5363c7790 21 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 22 * This is free software; you can redistribute it and/or modify it under
mbedakhela 0:92f5363c7790 23 * the terms of the GNU General Public License (version 2) as published by
mbedakhela 0:92f5363c7790 24 * the Free Software Foundation AND MODIFIED BY OpenPicus team.
mbedakhela 0:92f5363c7790 25 *
mbedakhela 0:92f5363c7790 26 * ***NOTE*** The exception to the GPL is included to allow you to distribute
mbedakhela 0:92f5363c7790 27 * a combined work that includes OpenPicus code without being obliged to
mbedakhela 0:92f5363c7790 28 * provide the source code for proprietary components outside of the OpenPicus
mbedakhela 0:92f5363c7790 29 * code.
mbedakhela 0:92f5363c7790 30 * OpenPicus software is distributed in the hope that it will be useful, but
mbedakhela 0:92f5363c7790 31 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
mbedakhela 0:92f5363c7790 32 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
mbedakhela 0:92f5363c7790 33 * more details.
mbedakhela 0:92f5363c7790 34 *
mbedakhela 0:92f5363c7790 35 *
mbedakhela 0:92f5363c7790 36 * Warranty
mbedakhela 0:92f5363c7790 37 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 38 * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
mbedakhela 0:92f5363c7790 39 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
mbedakhela 0:92f5363c7790 40 * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A
mbedakhela 0:92f5363c7790 41 * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL
mbedakhela 0:92f5363c7790 42 * WE ARE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR
mbedakhela 0:92f5363c7790 43 * CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF
mbedakhela 0:92f5363c7790 44 * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS
mbedakhela 0:92f5363c7790 45 * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE
mbedakhela 0:92f5363c7790 46 * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER
mbedakhela 0:92f5363c7790 47 * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT
mbedakhela 0:92f5363c7790 48 * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE.
mbedakhela 0:92f5363c7790 49 *
mbedakhela 0:92f5363c7790 50 **************************************************************************/
mbedakhela 0:92f5363c7790 51
mbedakhela 0:92f5363c7790 52 #include "mbed.h"
mbedakhela 0:92f5363c7790 53 #include "parse.h"
mbedakhela 0:92f5363c7790 54 #include "TCPSocketConnection.h"
mbedakhela 0:92f5363c7790 55 #include <string>
mbedakhela 0:92f5363c7790 56 //#include "string.h"
mbedakhela 0:92f5363c7790 57 //#include "HWlib.h"
mbedakhela 0:92f5363c7790 58
mbedakhela 0:92f5363c7790 59 /*-------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 60 | Function: dynamicPARSE(char *tab[][5], int rows) |
mbedakhela 0:92f5363c7790 61 | Description: Function to parse strings. |
mbedakhela 0:92f5363c7790 62 | Returns: - |
mbedakhela 0:92f5363c7790 63 | Parameters: char *tab[][5] - pointer to bidimensional array |
mbedakhela 0:92f5363c7790 64 | |
mbedakhela 0:92f5363c7790 65 | tab[0][0] => type of parse (use denfine) |
mbedakhela 0:92f5363c7790 66 | - BETWEEN |
mbedakhela 0:92f5363c7790 67 | - BEFORE |
mbedakhela 0:92f5363c7790 68 | - AFTER |
mbedakhela 0:92f5363c7790 69 | tab[0][1] => string/token where to start |
mbedakhela 0:92f5363c7790 70 | tab[0][2] => string/token where to stop |
mbedakhela 0:92f5363c7790 71 | tab[0][3] => destination string |
mbedakhela 0:92f5363c7790 72 | tab[0][4] => source string |
mbedakhela 0:92f5363c7790 73 | |
mbedakhela 0:92f5363c7790 74 | int rows - number of the array rows |
mbedakhela 0:92f5363c7790 75 -------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 76
mbedakhela 0:92f5363c7790 77 void PARSE::dynamicPARSE(char *tab[][5], int rows)
mbedakhela 0:92f5363c7790 78 {
mbedakhela 0:92f5363c7790 79 int i = 0;
mbedakhela 0:92f5363c7790 80
mbedakhela 0:92f5363c7790 81 for(i=0; i<rows; i++)
mbedakhela 0:92f5363c7790 82 {
mbedakhela 0:92f5363c7790 83 if ( !(strcmp(tab[i][0],"BETWEEN")) )
mbedakhela 0:92f5363c7790 84 {
mbedakhela 0:92f5363c7790 85 PARSEbetween( tab[i][4], tab[i][1], tab[i][2], tab[i][3]);
mbedakhela 0:92f5363c7790 86 }
mbedakhela 0:92f5363c7790 87
mbedakhela 0:92f5363c7790 88 else if ( !(strcmp(tab[i][0],"BEFORE")) )
mbedakhela 0:92f5363c7790 89 {
mbedakhela 0:92f5363c7790 90 PARSEbefore( tab[i][4], tab[i][2], tab[i][3]);
mbedakhela 0:92f5363c7790 91 }
mbedakhela 0:92f5363c7790 92
mbedakhela 0:92f5363c7790 93 else //after
mbedakhela 0:92f5363c7790 94 {
mbedakhela 0:92f5363c7790 95 PARSEafter( tab[i][4], tab[i][1], tab[i][3]);
mbedakhela 0:92f5363c7790 96 }
mbedakhela 0:92f5363c7790 97 }
mbedakhela 0:92f5363c7790 98 }
mbedakhela 0:92f5363c7790 99
mbedakhela 0:92f5363c7790 100 /*-------------------------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 101 | Function: HTTPdynamicPARSE(char host[], char command[], char *tab[][5], int rows, int snifftime)|
mbedakhela 0:92f5363c7790 102 | Description: Function to parse strings with built-in TCPClient. |
mbedakhela 0:92f5363c7790 103 | Returns: - |
mbedakhela 0:92f5363c7790 104 | Parameters: char host[] - IP or Website address to which want to connect |
mbedakhela 0:92f5363c7790 105 | |
mbedakhela 0:92f5363c7790 106 | char command[] - command to be sent through the TCPClient |
mbedakhela 0:92f5363c7790 107 | |
mbedakhela 0:92f5363c7790 108 | char *tab[][5] - pointer to bidimensional array |
mbedakhela 0:92f5363c7790 109 | |
mbedakhela 0:92f5363c7790 110 | tab[0][0] => type of parse (use denfine) |
mbedakhela 0:92f5363c7790 111 | - BETWEEN |
mbedakhela 0:92f5363c7790 112 | - BEFORE |
mbedakhela 0:92f5363c7790 113 | - AFTER |
mbedakhela 0:92f5363c7790 114 | tab[0][1] => string/token where to start |
mbedakhela 0:92f5363c7790 115 | tab[0][2] => string/token where to stop |
mbedakhela 0:92f5363c7790 116 | tab[0][3] => destination string |
mbedakhela 0:92f5363c7790 117 | tab[0][4] => option destination string (use denfine) |
mbedakhela 0:92f5363c7790 118 | - YES -> destination string = buffer |
mbedakhela 0:92f5363c7790 119 | - NO -> destination string = tab[0][3] |
mbedakhela 0:92f5363c7790 120 | |
mbedakhela 0:92f5363c7790 121 | int rows - number of the array rows |
mbedakhela 0:92f5363c7790 122 | |
mbedakhela 0:92f5363c7790 123 | int snifftime - time in 10 microseconds to accumulate more characters |
mbedakhela 0:92f5363c7790 124 -------------------------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 125
mbedakhela 0:92f5363c7790 126 void PARSE::HTTPdynamicPARSE(char host[], char command[], char *tab[][5], int rows, int snifftime)
mbedakhela 0:92f5363c7790 127 {
mbedakhela 0:92f5363c7790 128 //TCP_SOCKET Socket;
mbedakhela 0:92f5363c7790 129 // int flag = 0;
mbedakhela 0:92f5363c7790 130 TCPSocketConnection ThingSock;
mbedakhela 0:92f5363c7790 131 int size;
mbedakhela 0:92f5363c7790 132 int i = 0;
mbedakhela 0:92f5363c7790 133
mbedakhela 0:92f5363c7790 134 //Socket=TCPClientOpen ( host, "80");
mbedakhela 0:92f5363c7790 135 //while((Socket==INVALID_SOCKET));
mbedakhela 0:92f5363c7790 136 //while(!TCPisConn(Socket));
mbedakhela 0:92f5363c7790 137
mbedakhela 0:92f5363c7790 138 //TCPWrite ( Socket, command, strlen(command) );
mbedakhela 0:92f5363c7790 139 //vTaskDelay(snifftime);
mbedakhela 0:92f5363c7790 140 ///////////////////////////////////
mbedakhela 0:92f5363c7790 141 ThingSock.connect(host, 80);
mbedakhela 0:92f5363c7790 142
mbedakhela 0:92f5363c7790 143 while(!ThingSock.is_connected());
mbedakhela 0:92f5363c7790 144 ThingSock.send_all(command, (int)strlen(command));
mbedakhela 0:92f5363c7790 145
mbedakhela 0:92f5363c7790 146
mbedakhela 0:92f5363c7790 147
mbedakhela 0:92f5363c7790 148 /*
mbedakhela 0:92f5363c7790 149 while( flag==0 )
mbedakhela 0:92f5363c7790 150 {
mbedakhela 0:92f5363c7790 151
mbedakhela 0:92f5363c7790 152 size = TCPRxLen ( Socket );
mbedakhela 0:92f5363c7790 153
mbedakhela 0:92f5363c7790 154 if((int)size<=0)
mbedakhela 0:92f5363c7790 155 {
mbedakhela 0:92f5363c7790 156 i++;
mbedakhela 0:92f5363c7790 157 if(i==10)
mbedakhela 0:92f5363c7790 158 break;
mbedakhela 0:92f5363c7790 159 }
mbedakhela 0:92f5363c7790 160 else
mbedakhela 0:92f5363c7790 161 flag = 1;
mbedakhela 0:92f5363c7790 162 }
mbedakhela 0:92f5363c7790 163
mbedakhela 0:92f5363c7790 164 if(flag==1)
mbedakhela 0:92f5363c7790 165 {
mbedakhela 0:92f5363c7790 166 */
mbedakhela 0:92f5363c7790 167 char buffer[(int)size];
mbedakhela 0:92f5363c7790 168
mbedakhela 0:92f5363c7790 169 //TCPRead ( Socket, buffer, (int)size );
mbedakhela 0:92f5363c7790 170 //vTaskDelay(200);
mbedakhela 0:92f5363c7790 171 //TCPClientClose ( Socket );
mbedakhela 0:92f5363c7790 172
mbedakhela 0:92f5363c7790 173 ThingSock.receive_all(buffer, (int)size);
mbedakhela 0:92f5363c7790 174 ThingSock.close();
mbedakhela 0:92f5363c7790 175
mbedakhela 0:92f5363c7790 176
mbedakhela 0:92f5363c7790 177
mbedakhela 0:92f5363c7790 178
mbedakhela 0:92f5363c7790 179 for(i=0; i<rows; i++)
mbedakhela 0:92f5363c7790 180 {
mbedakhela 0:92f5363c7790 181 if ( !(strcmp(tab[i][0],"BETWEEN")) )
mbedakhela 0:92f5363c7790 182 {
mbedakhela 0:92f5363c7790 183
mbedakhela 0:92f5363c7790 184 if ( !(strcmp(tab[i][4],"YES")) )
mbedakhela 0:92f5363c7790 185 PARSEbetween( buffer, tab[i][1], tab[i][2], buffer);
mbedakhela 0:92f5363c7790 186 else
mbedakhela 0:92f5363c7790 187 PARSEbetween( buffer, tab[i][1], tab[i][2], tab[i][3]);
mbedakhela 0:92f5363c7790 188
mbedakhela 0:92f5363c7790 189 }
mbedakhela 0:92f5363c7790 190
mbedakhela 0:92f5363c7790 191 else if ( !(strcmp(tab[i][0],"BEFORE")) )
mbedakhela 0:92f5363c7790 192 {
mbedakhela 0:92f5363c7790 193
mbedakhela 0:92f5363c7790 194 if ( !(strcmp(tab[i][4],"YES")) )
mbedakhela 0:92f5363c7790 195 PARSEbefore( buffer, tab[i][2], buffer);
mbedakhela 0:92f5363c7790 196 else
mbedakhela 0:92f5363c7790 197 PARSEbefore( buffer, tab[i][2], tab[i][3]);
mbedakhela 0:92f5363c7790 198 }
mbedakhela 0:92f5363c7790 199
mbedakhela 0:92f5363c7790 200 else //after
mbedakhela 0:92f5363c7790 201 {
mbedakhela 0:92f5363c7790 202
mbedakhela 0:92f5363c7790 203 if ( !(strcmp(tab[i][4],"YES")) )
mbedakhela 0:92f5363c7790 204 PARSEafter( buffer, tab[i][1], buffer);
mbedakhela 0:92f5363c7790 205 else
mbedakhela 0:92f5363c7790 206 PARSEafter( buffer, tab[i][1], tab[i][3]);
mbedakhela 0:92f5363c7790 207
mbedakhela 0:92f5363c7790 208 }
mbedakhela 0:92f5363c7790 209 }
mbedakhela 0:92f5363c7790 210 // }
mbedakhela 0:92f5363c7790 211 }
mbedakhela 0:92f5363c7790 212
mbedakhela 0:92f5363c7790 213 /*-------------------------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 214 | Function: multiPARSEbetween(char str[], char start[], char stop[], char *substr[], int multi) |
mbedakhela 0:92f5363c7790 215 | Description: Function to use more PARSEbetween in a string. |
mbedakhela 0:92f5363c7790 216 | Returns: - |
mbedakhela 0:92f5363c7790 217 | Parameters: char str[] - source string |
mbedakhela 0:92f5363c7790 218 | |
mbedakhela 0:92f5363c7790 219 | char start[] - string/token where to start |
mbedakhela 0:92f5363c7790 220 | |
mbedakhela 0:92f5363c7790 221 | char stop[] - string/token where to stop |
mbedakhela 0:92f5363c7790 222 | |
mbedakhela 0:92f5363c7790 223 | char *substr[] - pointer to destination string |
mbedakhela 0:92f5363c7790 224 | |
mbedakhela 0:92f5363c7790 225 | int multi - number of executions of the PARSEbetween function |
mbedakhela 0:92f5363c7790 226 -------------------------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 227
mbedakhela 0:92f5363c7790 228 void PARSE::multiPARSEbetween(char str[], char start[], char stop[], char *substr[], int multi)
mbedakhela 0:92f5363c7790 229 {
mbedakhela 0:92f5363c7790 230 int i;
mbedakhela 0:92f5363c7790 231 char *pf;
mbedakhela 0:92f5363c7790 232 char *pi;
mbedakhela 0:92f5363c7790 233 int pd;
mbedakhela 0:92f5363c7790 234 int c;
mbedakhela 0:92f5363c7790 235 int j;
mbedakhela 0:92f5363c7790 236
mbedakhela 0:92f5363c7790 237 int sizestart = strlen(start);
mbedakhela 0:92f5363c7790 238
mbedakhela 0:92f5363c7790 239 pi=strstr(str,start);
mbedakhela 0:92f5363c7790 240
mbedakhela 0:92f5363c7790 241
mbedakhela 0:92f5363c7790 242 for( j=0; j<multi; j++)
mbedakhela 0:92f5363c7790 243 {
mbedakhela 0:92f5363c7790 244
mbedakhela 0:92f5363c7790 245 pf=strstr(pi+sizestart,stop);
mbedakhela 0:92f5363c7790 246 pd=pf-pi;
mbedakhela 0:92f5363c7790 247 c=pd-sizestart;
mbedakhela 0:92f5363c7790 248
mbedakhela 0:92f5363c7790 249 for(i=0;i<c;i++)
mbedakhela 0:92f5363c7790 250 {
mbedakhela 0:92f5363c7790 251 *(substr[j]+i)=*(pi+sizestart+i);
mbedakhela 0:92f5363c7790 252 }
mbedakhela 0:92f5363c7790 253 *(substr[j]+i)='\0';
mbedakhela 0:92f5363c7790 254 pi=strstr(pi+sizestart,start);
mbedakhela 0:92f5363c7790 255
mbedakhela 0:92f5363c7790 256 }
mbedakhela 0:92f5363c7790 257 }
mbedakhela 0:92f5363c7790 258
mbedakhela 0:92f5363c7790 259 /*-------------------------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 260 | Function: PARSEafter(char str[], char start[], char substr[]) |
mbedakhela 0:92f5363c7790 261 | Description: Function to parse a string and rewrite it from start token to the end. |
mbedakhela 0:92f5363c7790 262 | Returns: - |
mbedakhela 0:92f5363c7790 263 | Parameters: char str[] - source string |
mbedakhela 0:92f5363c7790 264 | |
mbedakhela 0:92f5363c7790 265 | char start[] - string/token where to start |
mbedakhela 0:92f5363c7790 266 | |
mbedakhela 0:92f5363c7790 267 | char substr[] - destination string |
mbedakhela 0:92f5363c7790 268 -------------------------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 269
mbedakhela 0:92f5363c7790 270 void PARSE::PARSEafter(char str[], char start[], char substr[])
mbedakhela 0:92f5363c7790 271 {
mbedakhela 0:92f5363c7790 272 int i;
mbedakhela 0:92f5363c7790 273 int sizestart;
mbedakhela 0:92f5363c7790 274 int sizestr;
mbedakhela 0:92f5363c7790 275 char *ptrsub;
mbedakhela 0:92f5363c7790 276 char *ptrstr;
mbedakhela 0:92f5363c7790 277 char *pi;
mbedakhela 0:92f5363c7790 278 int c;
mbedakhela 0:92f5363c7790 279
mbedakhela 0:92f5363c7790 280 ptrsub=substr;
mbedakhela 0:92f5363c7790 281 sizestart=strlen(start);
mbedakhela 0:92f5363c7790 282 sizestr=strlen(str);
mbedakhela 0:92f5363c7790 283 ptrstr=str;
mbedakhela 0:92f5363c7790 284
mbedakhela 0:92f5363c7790 285 pi=strstr(str,start);
mbedakhela 0:92f5363c7790 286 c=sizestr-(int)pi+(int)ptrstr-sizestart+1;
mbedakhela 0:92f5363c7790 287
mbedakhela 0:92f5363c7790 288 for(i=0;i<c;i++)
mbedakhela 0:92f5363c7790 289 {
mbedakhela 0:92f5363c7790 290 *(ptrsub+i)=*(pi+sizestart+i);
mbedakhela 0:92f5363c7790 291 }
mbedakhela 0:92f5363c7790 292 *(ptrsub+i)='\0';
mbedakhela 0:92f5363c7790 293 }
mbedakhela 0:92f5363c7790 294
mbedakhela 0:92f5363c7790 295 /*-------------------------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 296 | Function: PARSEbefore(char str[], char stop[], char substr[]) |
mbedakhela 0:92f5363c7790 297 | Description: Function to parse a string and rewrite it from start to the stop token. |
mbedakhela 0:92f5363c7790 298 | Returns: - |
mbedakhela 0:92f5363c7790 299 | Parameters: char str[] - source string |
mbedakhela 0:92f5363c7790 300 | |
mbedakhela 0:92f5363c7790 301 | char stop[] - string/token where to stop |
mbedakhela 0:92f5363c7790 302 | |
mbedakhela 0:92f5363c7790 303 | char substr[] - destination string |
mbedakhela 0:92f5363c7790 304 -------------------------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 305
mbedakhela 0:92f5363c7790 306 void PARSE::PARSEbefore(char str[], char stop[], char substr[])
mbedakhela 0:92f5363c7790 307 {
mbedakhela 0:92f5363c7790 308 int i;
mbedakhela 0:92f5363c7790 309 char *pf;
mbedakhela 0:92f5363c7790 310 char *ptrsub;
mbedakhela 0:92f5363c7790 311 char *ptrstr;
mbedakhela 0:92f5363c7790 312 int c;
mbedakhela 0:92f5363c7790 313
mbedakhela 0:92f5363c7790 314 ptrsub=substr;
mbedakhela 0:92f5363c7790 315 ptrstr=str;
mbedakhela 0:92f5363c7790 316
mbedakhela 0:92f5363c7790 317 pf=strstr(str,stop);
mbedakhela 0:92f5363c7790 318 c=(int)pf-(int)ptrstr;
mbedakhela 0:92f5363c7790 319
mbedakhela 0:92f5363c7790 320
mbedakhela 0:92f5363c7790 321 for(i=0;i<c;i++)
mbedakhela 0:92f5363c7790 322 {
mbedakhela 0:92f5363c7790 323 *(ptrsub+i)=*(ptrstr+i);
mbedakhela 0:92f5363c7790 324 }
mbedakhela 0:92f5363c7790 325 *(ptrsub+i)='\0';
mbedakhela 0:92f5363c7790 326
mbedakhela 0:92f5363c7790 327 }
mbedakhela 0:92f5363c7790 328
mbedakhela 0:92f5363c7790 329 /*-------------------------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 330 | Function: PARSEbetween(char str[], char start[], char stop[], char substr[]) |
mbedakhela 0:92f5363c7790 331 | Description: Function to parse a string and rewrite it from start token to the stop token. |
mbedakhela 0:92f5363c7790 332 | Returns: - |
mbedakhela 0:92f5363c7790 333 | Parameters: char str[] - source string |
mbedakhela 0:92f5363c7790 334 | |
mbedakhela 0:92f5363c7790 335 | char start[] - string/token where to start |
mbedakhela 0:92f5363c7790 336 | |
mbedakhela 0:92f5363c7790 337 | char stop[] - string/token where to stop |
mbedakhela 0:92f5363c7790 338 | |
mbedakhela 0:92f5363c7790 339 | char substr[] - destination string |
mbedakhela 0:92f5363c7790 340 -------------------------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 341
mbedakhela 0:92f5363c7790 342 void PARSE::PARSEbetween(char str[], char start[], char stop[], char substr[])
mbedakhela 0:92f5363c7790 343 {
mbedakhela 0:92f5363c7790 344 int i;
mbedakhela 0:92f5363c7790 345 int sizestart;
mbedakhela 0:92f5363c7790 346 char *pf;
mbedakhela 0:92f5363c7790 347 char *ptrsub;
mbedakhela 0:92f5363c7790 348 char *pi;
mbedakhela 0:92f5363c7790 349 int pd;
mbedakhela 0:92f5363c7790 350 int c;
mbedakhela 0:92f5363c7790 351
mbedakhela 0:92f5363c7790 352 ptrsub=substr;
mbedakhela 0:92f5363c7790 353 sizestart=strlen(start);
mbedakhela 0:92f5363c7790 354
mbedakhela 0:92f5363c7790 355 pi=strstr(str,start);
mbedakhela 0:92f5363c7790 356 pf=strstr(pi+sizestart,stop);
mbedakhela 0:92f5363c7790 357
mbedakhela 0:92f5363c7790 358 pd=pf-pi;
mbedakhela 0:92f5363c7790 359 c=pd-sizestart;
mbedakhela 0:92f5363c7790 360
mbedakhela 0:92f5363c7790 361 for(i=0;i<c;i++)
mbedakhela 0:92f5363c7790 362 {
mbedakhela 0:92f5363c7790 363 *(ptrsub+i)=*(pi+sizestart+i);
mbedakhela 0:92f5363c7790 364 }
mbedakhela 0:92f5363c7790 365 *(ptrsub+i)='\0';
mbedakhela 0:92f5363c7790 366
mbedakhela 0:92f5363c7790 367 }