bosko lekovic
/
ETHtoCOM_10
nova verzija tcp+udp->serial com
doHTML.cpp@8:c0f54b381346, 2020-04-19 (annotated)
- Committer:
- bosko001
- Date:
- Sun Apr 19 22:13:45 2020 +0000
- Revision:
- 8:c0f54b381346
- Parent:
- 7:7ea932eb31f6
- Child:
- 9:893843262a1f
zavrseno sa dataFlashom i sa HTML-om
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bosko001 | 4:7abcf4543282 | 1 | #include "mbed.h" |
bosko001 | 3:1196befeace0 | 2 | #include "clubbing.h" |
bosko001 | 2:45b351b4fc2a | 3 | #include "string.h" |
bosko001 | 2:45b351b4fc2a | 4 | #include "dxml.h" |
bosko001 | 2:45b351b4fc2a | 5 | |
bosko001 | 2:45b351b4fc2a | 6 | #include "doHTML.h" |
bosko001 | 3:1196befeace0 | 7 | #include "dataFlash.h" |
bosko001 | 2:45b351b4fc2a | 8 | #include "HTMLpage.h" |
bosko001 | 2:45b351b4fc2a | 9 | |
bosko001 | 2:45b351b4fc2a | 10 | |
bosko001 | 2:45b351b4fc2a | 11 | |
bosko001 | 5:c9a908749d4c | 12 | /************************** Pocetak *********************/ |
bosko001 | 4:7abcf4543282 | 13 | |
bosko001 | 4:7abcf4543282 | 14 | void test_HTML(void) |
bosko001 | 4:7abcf4543282 | 15 | { |
bosko001 | 5:c9a908749d4c | 16 | extern C_HTMLparse *gpc_html; |
bosko001 | 3:1196befeace0 | 17 | |
bosko001 | 5:c9a908749d4c | 18 | P_str( "selected bit rate" , (char*)gpc_html->get_selected_option( "baud_rate" ) ); |
bosko001 | 5:c9a908749d4c | 19 | P_str( "selected parity" , (char*)gpc_html->get_selected_option( "parity" ) ); |
bosko001 | 5:c9a908749d4c | 20 | P_str( "selected stop bits" , (char*)gpc_html->get_selected_option( "stop_bits" ) ); |
bosko001 | 5:c9a908749d4c | 21 | P_str( "selected data bits" , (char*)gpc_html->get_selected_option( "data_bits" ) ); |
bosko001 | 3:1196befeace0 | 22 | |
bosko001 | 4:7abcf4543282 | 23 | { |
bosko001 | 4:7abcf4543282 | 24 | extern UARTSerial *gp_scom; |
bosko001 | 4:7abcf4543282 | 25 | extern void sendScom( struct UARTSerial *p_scom, char *buffer, int val); |
bosko001 | 4:7abcf4543282 | 26 | |
bosko001 | 5:c9a908749d4c | 27 | auto c = gpc_html->getHTML_free( ); |
bosko001 | 5:c9a908749d4c | 28 | // n = p_soc->send(c, strlen(c)); |
bosko001 | 5:c9a908749d4c | 29 | sendScom( gp_scom, c, strlen(c)); |
bosko001 | 5:c9a908749d4c | 30 | free(c); |
bosko001 | 5:c9a908749d4c | 31 | } |
bosko001 | 5:c9a908749d4c | 32 | |
bosko001 | 5:c9a908749d4c | 33 | |
bosko001 | 5:c9a908749d4c | 34 | P_str( "select bit rate 38400", gpc_html->set_selected_option( "baud_rate", "38400" ) ); |
bosko001 | 5:c9a908749d4c | 35 | P_str( "select bit parity ODD", gpc_html->set_selected_option( "parity", "odd" ) ); |
bosko001 | 5:c9a908749d4c | 36 | P_str( "select stop bits 1.5", gpc_html->set_selected_option( "stop_bits", "1.5" ) ); |
bosko001 | 5:c9a908749d4c | 37 | P_str( "select data bits 7", gpc_html->set_selected_option( "data_bits", "7" ) ); |
bosko001 | 5:c9a908749d4c | 38 | |
bosko001 | 5:c9a908749d4c | 39 | { |
bosko001 | 5:c9a908749d4c | 40 | extern UARTSerial *gp_scom; |
bosko001 | 5:c9a908749d4c | 41 | extern void sendScom( struct UARTSerial *p_scom, char *buffer, int val); |
bosko001 | 5:c9a908749d4c | 42 | |
bosko001 | 5:c9a908749d4c | 43 | auto c = gpc_html->getHTML_free( ); |
bosko001 | 4:7abcf4543282 | 44 | // n = p_soc->send(c, strlen(c)); |
bosko001 | 4:7abcf4543282 | 45 | sendScom( gp_scom, c, strlen(c)); |
bosko001 | 4:7abcf4543282 | 46 | free(c); |
bosko001 | 4:7abcf4543282 | 47 | } |
bosko001 | 4:7abcf4543282 | 48 | |
bosko001 | 4:7abcf4543282 | 49 | |
bosko001 | 5:c9a908749d4c | 50 | P_str( "selected bit rate" , (char*)gpc_html->get_selected_option( "baud_rate" ) ); |
bosko001 | 5:c9a908749d4c | 51 | P_str( "selected parity" , (char*)gpc_html->get_selected_option( "parity" ) ); |
bosko001 | 5:c9a908749d4c | 52 | P_str( "selected stop bits" , (char*)gpc_html->get_selected_option( "stop_bits" ) ); |
bosko001 | 5:c9a908749d4c | 53 | P_str( "selected data bits" , (char*)gpc_html->get_selected_option( "data_bits" ) ); |
bosko001 | 5:c9a908749d4c | 54 | |
bosko001 | 5:c9a908749d4c | 55 | } |
bosko001 | 5:c9a908749d4c | 56 | |
bosko001 | 5:c9a908749d4c | 57 | |
bosko001 | 5:c9a908749d4c | 58 | |
bosko001 | 5:c9a908749d4c | 59 | |
bosko001 | 5:c9a908749d4c | 60 | |
bosko001 | 5:c9a908749d4c | 61 | /************************ definicija klase C_HTMLparse ********************/ |
bosko001 | 3:1196befeace0 | 62 | |
bosko001 | 5:c9a908749d4c | 63 | void C_HTMLparse::load_front_row(void ) |
bosko001 | 5:c9a908749d4c | 64 | { |
bosko001 | 5:c9a908749d4c | 65 | int i = 0; |
bosko001 | 5:c9a908749d4c | 66 | for (auto td = dxml_child(tr, "td")/*, i = 0*/; td; td = td->next) |
bosko001 | 5:c9a908749d4c | 67 | { |
bosko001 | 5:c9a908749d4c | 68 | auto input = dxml_child(td, "input"); |
bosko001 | 5:c9a908749d4c | 69 | front_row[i] = input; |
bosko001 | 5:c9a908749d4c | 70 | ++i; |
bosko001 | 5:c9a908749d4c | 71 | } |
bosko001 | 5:c9a908749d4c | 72 | |
bosko001 | 5:c9a908749d4c | 73 | tr = tr->next; |
bosko001 | 5:c9a908749d4c | 74 | } |
bosko001 | 5:c9a908749d4c | 75 | |
bosko001 | 5:c9a908749d4c | 76 | void C_HTMLparse::load_second_row() |
bosko001 | 5:c9a908749d4c | 77 | { |
bosko001 | 5:c9a908749d4c | 78 | int i = 0; |
bosko001 | 5:c9a908749d4c | 79 | for (auto td = dxml_child(tr, "td")/*, i = 0*/; td; td = td->next) |
bosko001 | 5:c9a908749d4c | 80 | { |
bosko001 | 5:c9a908749d4c | 81 | auto input = dxml_child(td, "input"); |
bosko001 | 5:c9a908749d4c | 82 | if (i == 0) |
bosko001 | 5:c9a908749d4c | 83 | UDPs[0] = input; |
bosko001 | 5:c9a908749d4c | 84 | else if(i == 1) |
bosko001 | 5:c9a908749d4c | 85 | TCPs[0] = input; |
bosko001 | 5:c9a908749d4c | 86 | ++i; |
bosko001 | 5:c9a908749d4c | 87 | } |
bosko001 | 5:c9a908749d4c | 88 | |
bosko001 | 5:c9a908749d4c | 89 | tr = tr->next; |
bosko001 | 5:c9a908749d4c | 90 | } |
bosko001 | 5:c9a908749d4c | 91 | |
bosko001 | 5:c9a908749d4c | 92 | void C_HTMLparse::load_udp_and_tcp(dxml_t& td) |
bosko001 | 4:7abcf4543282 | 93 | { |
bosko001 | 5:c9a908749d4c | 94 | for (int i = 0; i < 4; td = td->next) |
bosko001 | 5:c9a908749d4c | 95 | { |
bosko001 | 5:c9a908749d4c | 96 | dxml_t inputs[5]; |
bosko001 | 5:c9a908749d4c | 97 | int input_count = 0; |
bosko001 | 5:c9a908749d4c | 98 | for (auto input = dxml_child(td, "input"); input; input = input->next) |
bosko001 | 5:c9a908749d4c | 99 | inputs[input_count++] = input; |
bosko001 | 5:c9a908749d4c | 100 | |
bosko001 | 5:c9a908749d4c | 101 | if (i < 2) // Load inputs into UDPs |
bosko001 | 5:c9a908749d4c | 102 | { |
bosko001 | 5:c9a908749d4c | 103 | for (int k = 0; k < input_count; ++k) |
bosko001 | 5:c9a908749d4c | 104 | UDPs[i == 0 ? k + 1 : k + 6] = inputs[k]; |
bosko001 | 5:c9a908749d4c | 105 | } |
bosko001 | 5:c9a908749d4c | 106 | else |
bosko001 | 5:c9a908749d4c | 107 | { |
bosko001 | 5:c9a908749d4c | 108 | for (int k = 0; k < input_count; ++k) |
bosko001 | 5:c9a908749d4c | 109 | TCPs[i == 2 ? k + 1 : k + 6] = inputs[k]; |
bosko001 | 5:c9a908749d4c | 110 | } |
bosko001 | 5:c9a908749d4c | 111 | |
bosko001 | 5:c9a908749d4c | 112 | ++i; |
bosko001 | 5:c9a908749d4c | 113 | } |
bosko001 | 5:c9a908749d4c | 114 | } |
bosko001 | 5:c9a908749d4c | 115 | |
bosko001 | 5:c9a908749d4c | 116 | void C_HTMLparse::load_serial(dxml_t& td) |
bosko001 | 5:c9a908749d4c | 117 | { |
bosko001 | 5:c9a908749d4c | 118 | auto select = dxml_child(td, "select"); |
bosko001 | 5:c9a908749d4c | 119 | for (int i = 0; select; select = select->next) |
bosko001 | 5:c9a908749d4c | 120 | serial[i++] = select; |
bosko001 | 5:c9a908749d4c | 121 | } |
bosko001 | 5:c9a908749d4c | 122 | |
bosko001 | 5:c9a908749d4c | 123 | |
bosko001 | 5:c9a908749d4c | 124 | dxml_t C_HTMLparse::get_serial_option(dxml_t s, int option_idx) |
bosko001 | 5:c9a908749d4c | 125 | { |
bosko001 | 5:c9a908749d4c | 126 | auto rv = dxml_child(s, "option"); |
bosko001 | 5:c9a908749d4c | 127 | for (int i = 0; i < option_idx; ++i) |
bosko001 | 5:c9a908749d4c | 128 | { |
bosko001 | 5:c9a908749d4c | 129 | if( rv->next == NULL ) return NULL; |
bosko001 | 5:c9a908749d4c | 130 | else rv = rv->next; |
bosko001 | 5:c9a908749d4c | 131 | } |
bosko001 | 5:c9a908749d4c | 132 | return rv; |
bosko001 | 5:c9a908749d4c | 133 | } |
bosko001 | 4:7abcf4543282 | 134 | |
bosko001 | 5:c9a908749d4c | 135 | C_HTMLparse::C_HTMLparse( void ) |
bosko001 | 5:c9a908749d4c | 136 | { |
bosko001 | 5:c9a908749d4c | 137 | |
bosko001 | 5:c9a908749d4c | 138 | p_HTMLpage = (char*)malloc(strlen(HTMLpage)+1); |
bosko001 | 5:c9a908749d4c | 139 | strcpy( p_HTMLpage, HTMLpage); |
bosko001 | 5:c9a908749d4c | 140 | P_int("ucitavam html", strlen(HTMLpage)); |
bosko001 | 5:c9a908749d4c | 141 | p_rootHTML = dxml_parse_str(p_HTMLpage, strlen(p_HTMLpage)); |
bosko001 | 5:c9a908749d4c | 142 | intern_init( ); |
bosko001 | 5:c9a908749d4c | 143 | } |
bosko001 | 7:7ea932eb31f6 | 144 | |
bosko001 | 5:c9a908749d4c | 145 | C_HTMLparse::C_HTMLparse( const char *str ) |
bosko001 | 5:c9a908749d4c | 146 | { |
bosko001 | 5:c9a908749d4c | 147 | p_HTMLpage = (char*)malloc(strlen(str)+1); |
bosko001 | 5:c9a908749d4c | 148 | strcpy( p_HTMLpage, str); |
bosko001 | 5:c9a908749d4c | 149 | P_int("ucitavam html", strlen(str)); |
bosko001 | 5:c9a908749d4c | 150 | p_rootHTML = dxml_parse_str(p_HTMLpage, strlen(p_HTMLpage)); |
bosko001 | 5:c9a908749d4c | 151 | intern_init( ); |
bosko001 | 5:c9a908749d4c | 152 | |
bosko001 | 5:c9a908749d4c | 153 | } |
bosko001 | 5:c9a908749d4c | 154 | |
bosko001 | 5:c9a908749d4c | 155 | |
bosko001 | 5:c9a908749d4c | 156 | void C_HTMLparse::intern_init( void ) |
bosko001 | 5:c9a908749d4c | 157 | { |
bosko001 | 5:c9a908749d4c | 158 | html_body = dxml_child(p_rootHTML, "body"); |
bosko001 | 5:c9a908749d4c | 159 | html_form = dxml_child(html_body, "form"); |
bosko001 | 5:c9a908749d4c | 160 | html_table = dxml_child(html_form, "table"); |
bosko001 | 5:c9a908749d4c | 161 | tr = dxml_child(html_table, "tr"); |
bosko001 | 5:c9a908749d4c | 162 | |
bosko001 | 5:c9a908749d4c | 163 | load_front_row(); |
bosko001 | 5:c9a908749d4c | 164 | |
bosko001 | 5:c9a908749d4c | 165 | load_second_row(); |
bosko001 | 5:c9a908749d4c | 166 | |
bosko001 | 5:c9a908749d4c | 167 | auto td = dxml_child(tr, "td"); |
bosko001 | 5:c9a908749d4c | 168 | load_udp_and_tcp(td); |
bosko001 | 5:c9a908749d4c | 169 | load_serial(td); |
bosko001 | 7:7ea932eb31f6 | 170 | for(int i = 0; i < sizeof( s_hpv)/sizeof( s_hpv[0]); i++) { s_hpv[i].name= NULL; s_hpv[i].value = NULL; } |
bosko001 | 4:7abcf4543282 | 171 | } |
bosko001 | 4:7abcf4543282 | 172 | |
bosko001 | 4:7abcf4543282 | 173 | |
bosko001 | 5:c9a908749d4c | 174 | char *C_HTMLparse::getHTML_free( void ) |
bosko001 | 5:c9a908749d4c | 175 | { |
bosko001 | 5:c9a908749d4c | 176 | return dxml_toxml(p_rootHTML); |
bosko001 | 5:c9a908749d4c | 177 | } |
bosko001 | 3:1196befeace0 | 178 | |
bosko001 | 3:1196befeace0 | 179 | |
bosko001 | 5:c9a908749d4c | 180 | /****************** geteri - seteri *************************/ |
bosko001 | 3:1196befeace0 | 181 | |
bosko001 | 3:1196befeace0 | 182 | |
bosko001 | 3:1196befeace0 | 183 | |
bosko001 | 3:1196befeace0 | 184 | |
bosko001 | 5:c9a908749d4c | 185 | const char * C_HTMLparse::get_selected_option( const char *name_option ) |
bosko001 | 5:c9a908749d4c | 186 | { |
bosko001 | 5:c9a908749d4c | 187 | for( int i=0; dxml_attr(serial[i], "name") != NULL; i++ ) |
bosko001 | 5:c9a908749d4c | 188 | { |
bosko001 | 5:c9a908749d4c | 189 | char *ret; |
bosko001 | 5:c9a908749d4c | 190 | if( !strcmp( (char*)dxml_attr(serial[i], "name"), name_option) ) |
bosko001 | 5:c9a908749d4c | 191 | { |
bosko001 | 5:c9a908749d4c | 192 | for(int j=0; dxml_attr(get_serial_option(serial[i], j), "value") != NULL; j++) |
bosko001 | 5:c9a908749d4c | 193 | { |
bosko001 | 5:c9a908749d4c | 194 | if( dxml_attr( get_serial_option(serial[i],j), "selected" ) ) |
bosko001 | 5:c9a908749d4c | 195 | return dxml_attr(get_serial_option(serial[i], j), "value"); |
bosko001 | 5:c9a908749d4c | 196 | } |
bosko001 | 5:c9a908749d4c | 197 | return dxml_attr(get_serial_option(serial[i], 0), "value"); |
bosko001 | 5:c9a908749d4c | 198 | } |
bosko001 | 5:c9a908749d4c | 199 | } |
bosko001 | 5:c9a908749d4c | 200 | return NULL; |
bosko001 | 5:c9a908749d4c | 201 | } |
bosko001 | 5:c9a908749d4c | 202 | |
bosko001 | 5:c9a908749d4c | 203 | const char * C_HTMLparse::set_selected_option( const char* name_option, const char* value_option ) |
bosko001 | 5:c9a908749d4c | 204 | { |
bosko001 | 5:c9a908749d4c | 205 | for( int i=0; dxml_attr(serial[i], "name") != NULL; i++ ) |
bosko001 | 5:c9a908749d4c | 206 | { |
bosko001 | 5:c9a908749d4c | 207 | // printf(" i = %d \n\r", i ); |
bosko001 | 5:c9a908749d4c | 208 | char *ret; |
bosko001 | 5:c9a908749d4c | 209 | if( !strcmp( (char*)dxml_attr(serial[i], "name"), name_option) ) |
bosko001 | 5:c9a908749d4c | 210 | { |
bosko001 | 5:c9a908749d4c | 211 | for(int j=0; dxml_attr(get_serial_option(serial[i], j), "value") != NULL; j++) |
bosko001 | 5:c9a908749d4c | 212 | { |
bosko001 | 5:c9a908749d4c | 213 | // printf(" j=%d \n\r", j); |
bosko001 | 5:c9a908749d4c | 214 | if( !strcmp( dxml_attr( get_serial_option(serial[i],j), "value"), value_option) ) |
bosko001 | 5:c9a908749d4c | 215 | { |
bosko001 | 5:c9a908749d4c | 216 | if( !dxml_attr( get_serial_option(serial[i],j), "selected") ) |
bosko001 | 5:c9a908749d4c | 217 | { |
bosko001 | 5:c9a908749d4c | 218 | for(int k=0; dxml_attr(get_serial_option(serial[i], k), "value") != NULL; k++) |
bosko001 | 5:c9a908749d4c | 219 | { |
bosko001 | 5:c9a908749d4c | 220 | // printf(" k=%d\n\r",k); |
bosko001 | 5:c9a908749d4c | 221 | if( !strcmp( dxml_attr( get_serial_option(serial[i],k), "value"), value_option) ) |
bosko001 | 5:c9a908749d4c | 222 | { |
bosko001 | 5:c9a908749d4c | 223 | printf(" kk=%d\n\r",k); |
bosko001 | 5:c9a908749d4c | 224 | dxml_set_attr( get_serial_option(serial[i],k), "selected", "ON" ); |
bosko001 | 5:c9a908749d4c | 225 | } |
bosko001 | 5:c9a908749d4c | 226 | else |
bosko001 | 5:c9a908749d4c | 227 | { |
bosko001 | 7:7ea932eb31f6 | 228 | // printf(" k=%d\n\r",k); |
bosko001 | 5:c9a908749d4c | 229 | dxml_set_attr( get_serial_option(serial[i],k), "selected", NULL ); |
bosko001 | 5:c9a908749d4c | 230 | } |
bosko001 | 5:c9a908749d4c | 231 | } |
bosko001 | 5:c9a908749d4c | 232 | } |
bosko001 | 5:c9a908749d4c | 233 | return value_option; |
bosko001 | 5:c9a908749d4c | 234 | } |
bosko001 | 5:c9a908749d4c | 235 | } |
bosko001 | 5:c9a908749d4c | 236 | } |
bosko001 | 5:c9a908749d4c | 237 | } |
bosko001 | 5:c9a908749d4c | 238 | |
bosko001 | 5:c9a908749d4c | 239 | return NULL; |
bosko001 | 5:c9a908749d4c | 240 | |
bosko001 | 5:c9a908749d4c | 241 | } |
bosko001 | 5:c9a908749d4c | 242 | |
bosko001 | 7:7ea932eb31f6 | 243 | #define COPY_IP_ATTR_VALUE( DXML_T, STR ) { char *s = (char *)dxml_attr( DXML_T, "value"); if( s ) {strcpy( s, STR ); dxml_set_attr( DXML_T, "value", s); } } |
bosko001 | 7:7ea932eb31f6 | 244 | #define COPY_PORT_ATTR_VALUE( DXML_T, STR ) { char *s = (char *)dxml_attr( DXML_T, "value"); if( s ) {strcpy( s, STR ); dxml_set_attr( DXML_T, "value", s); } } |
bosko001 | 5:c9a908749d4c | 245 | |
bosko001 | 7:7ea932eb31f6 | 246 | void C_HTMLparse::set_myIP( const char* str ) { if( test_ip( str )) COPY_IP_ATTR_VALUE( front_row[0], str ); } |
bosko001 | 7:7ea932eb31f6 | 247 | |
bosko001 | 7:7ea932eb31f6 | 248 | void C_HTMLparse::set_myMASK( const char* str ) { if( test_ip( str )) COPY_IP_ATTR_VALUE( front_row[1], str ); } |
bosko001 | 5:c9a908749d4c | 249 | |
bosko001 | 7:7ea932eb31f6 | 250 | void C_HTMLparse::set_myGATE( const char* str ) { if( test_ip( str )) COPY_IP_ATTR_VALUE( front_row[2], str ); } |
bosko001 | 7:7ea932eb31f6 | 251 | |
bosko001 | 7:7ea932eb31f6 | 252 | void C_HTMLparse::set_myUdpPort( const char* str ) { if( test_num( str ) ) COPY_PORT_ATTR_VALUE( UDPs[0], str ); } //dxml_set_attr( UDPs[0], "value", str ); } |
bosko001 | 7:7ea932eb31f6 | 253 | |
bosko001 | 7:7ea932eb31f6 | 254 | void C_HTMLparse::set_myTcpPort( const char* str ) { if( test_num( str ) ) COPY_PORT_ATTR_VALUE( TCPs[0], str ); } // if( test_num( str) ) dxml_set_attr( TCPs[0], "value", str); } |
bosko001 | 5:c9a908749d4c | 255 | |
bosko001 | 5:c9a908749d4c | 256 | void C_HTMLparse::set_UdpIP( int i, const char* str ) |
bosko001 | 5:c9a908749d4c | 257 | { |
bosko001 | 8:c0f54b381346 | 258 | if( (i > 0) && (i <= 5 ) ) |
bosko001 | 8:c0f54b381346 | 259 | { |
bosko001 | 8:c0f54b381346 | 260 | if( test_ip( str ) ) COPY_IP_ATTR_VALUE( UDPs[i], str ) |
bosko001 | 8:c0f54b381346 | 261 | else COPY_IP_ATTR_VALUE( UDPs[i], " " ) |
bosko001 | 8:c0f54b381346 | 262 | } |
bosko001 | 5:c9a908749d4c | 263 | } |
bosko001 | 5:c9a908749d4c | 264 | void C_HTMLparse::set_UdpPort( int i, const char* str ) |
bosko001 | 5:c9a908749d4c | 265 | { |
bosko001 | 8:c0f54b381346 | 266 | if( (i>0) && (i<= 4) ) |
bosko001 | 8:c0f54b381346 | 267 | { |
bosko001 | 8:c0f54b381346 | 268 | if (test_num( str ) ) COPY_PORT_ATTR_VALUE( UDPs[i+5], str ) |
bosko001 | 8:c0f54b381346 | 269 | else COPY_PORT_ATTR_VALUE( UDPs[i+5], " " ) |
bosko001 | 8:c0f54b381346 | 270 | } |
bosko001 | 5:c9a908749d4c | 271 | } |
bosko001 | 5:c9a908749d4c | 272 | |
bosko001 | 5:c9a908749d4c | 273 | void C_HTMLparse::set_TcpIP( int i, const char* str ) |
bosko001 | 5:c9a908749d4c | 274 | { |
bosko001 | 8:c0f54b381346 | 275 | if( (i > 0) && (i <= 5 ) ) |
bosko001 | 8:c0f54b381346 | 276 | { |
bosko001 | 8:c0f54b381346 | 277 | if( test_ip( str ) ) COPY_IP_ATTR_VALUE( TCPs[i], str ) /////// dxml_set_attr( TCPs[i], "value", str); |
bosko001 | 8:c0f54b381346 | 278 | else COPY_IP_ATTR_VALUE( TCPs[i], " " ) /////// dxml_set_attr( TCPs[i], "value", str); |
bosko001 | 8:c0f54b381346 | 279 | } |
bosko001 | 5:c9a908749d4c | 280 | } |
bosko001 | 5:c9a908749d4c | 281 | void C_HTMLparse::set_TcpPort( int i, const char* str ) |
bosko001 | 5:c9a908749d4c | 282 | { |
bosko001 | 8:c0f54b381346 | 283 | if( (i>0) && (i<= 4) ) |
bosko001 | 8:c0f54b381346 | 284 | { |
bosko001 | 8:c0f54b381346 | 285 | if( test_num( str ) ) COPY_PORT_ATTR_VALUE( TCPs[i+5], str ) ////dxml_set_attr( TCPs[i+6], "value", str) ; |
bosko001 | 8:c0f54b381346 | 286 | else COPY_PORT_ATTR_VALUE( TCPs[i+5], " " ) |
bosko001 | 8:c0f54b381346 | 287 | } |
bosko001 | 5:c9a908749d4c | 288 | } |
bosko001 | 5:c9a908749d4c | 289 | |
bosko001 | 5:c9a908749d4c | 290 | const char *C_HTMLparse::get_myIP( void ) |
bosko001 | 5:c9a908749d4c | 291 | { |
bosko001 | 5:c9a908749d4c | 292 | return dxml_attr( front_row[0], "value"); |
bosko001 | 5:c9a908749d4c | 293 | } |
bosko001 | 5:c9a908749d4c | 294 | const char *C_HTMLparse::get_myMASK(void) |
bosko001 | 5:c9a908749d4c | 295 | { |
bosko001 | 5:c9a908749d4c | 296 | return dxml_attr( front_row[1], "value"); |
bosko001 | 5:c9a908749d4c | 297 | } |
bosko001 | 5:c9a908749d4c | 298 | const char *C_HTMLparse::get_myGATE( void ) |
bosko001 | 5:c9a908749d4c | 299 | { |
bosko001 | 5:c9a908749d4c | 300 | return dxml_attr( front_row[2], "value"); |
bosko001 | 5:c9a908749d4c | 301 | } |
bosko001 | 5:c9a908749d4c | 302 | |
bosko001 | 5:c9a908749d4c | 303 | const char *C_HTMLparse::get_myUdpPort( void ) |
bosko001 | 5:c9a908749d4c | 304 | { |
bosko001 | 5:c9a908749d4c | 305 | return dxml_attr( UDPs[0], "value" ); |
bosko001 | 5:c9a908749d4c | 306 | } |
bosko001 | 5:c9a908749d4c | 307 | const char *C_HTMLparse::get_myTcpPort( void ) |
bosko001 | 5:c9a908749d4c | 308 | { |
bosko001 | 5:c9a908749d4c | 309 | return dxml_attr( TCPs[0], "value"); |
bosko001 | 5:c9a908749d4c | 310 | } |
bosko001 | 5:c9a908749d4c | 311 | |
bosko001 | 5:c9a908749d4c | 312 | const char *C_HTMLparse::get_UdpIP( int i ) |
bosko001 | 5:c9a908749d4c | 313 | { |
bosko001 | 5:c9a908749d4c | 314 | if( (i > 0) && (i <= 5 ) ) return dxml_attr( UDPs[i], "value"); |
bosko001 | 5:c9a908749d4c | 315 | return NULL; |
bosko001 | 5:c9a908749d4c | 316 | } |
bosko001 | 5:c9a908749d4c | 317 | |
bosko001 | 5:c9a908749d4c | 318 | const char *C_HTMLparse::get_UdpPort( int i ) |
bosko001 | 5:c9a908749d4c | 319 | { |
bosko001 | 7:7ea932eb31f6 | 320 | if( (i>0) && (i<= 4) ) return dxml_attr( UDPs[i+5], "value") ; |
bosko001 | 5:c9a908749d4c | 321 | return NULL; |
bosko001 | 5:c9a908749d4c | 322 | } |
bosko001 | 5:c9a908749d4c | 323 | |
bosko001 | 5:c9a908749d4c | 324 | const char *C_HTMLparse::get_TcpIP( int i ) |
bosko001 | 5:c9a908749d4c | 325 | { |
bosko001 | 5:c9a908749d4c | 326 | if( (i > 0) && (i <= 5 ) ) return dxml_attr( TCPs[i], "value"); |
bosko001 | 5:c9a908749d4c | 327 | return NULL; |
bosko001 | 5:c9a908749d4c | 328 | } |
bosko001 | 5:c9a908749d4c | 329 | |
bosko001 | 5:c9a908749d4c | 330 | const char *C_HTMLparse::get_TcpPort( int i ) |
bosko001 | 5:c9a908749d4c | 331 | { |
bosko001 | 7:7ea932eb31f6 | 332 | if( (i>0) && (i<= 4) ) return dxml_attr( TCPs[i+5], "value") ; |
bosko001 | 5:c9a908749d4c | 333 | return NULL; |
bosko001 | 5:c9a908749d4c | 334 | } |
bosko001 | 5:c9a908749d4c | 335 | |
bosko001 | 5:c9a908749d4c | 336 | |
bosko001 | 7:7ea932eb31f6 | 337 | /****************************************************************************/ |
bosko001 | 5:c9a908749d4c | 338 | |
bosko001 | 7:7ea932eb31f6 | 339 | /*************** HTTP obrada *********************************************/ |
bosko001 | 7:7ea932eb31f6 | 340 | |
bosko001 | 7:7ea932eb31f6 | 341 | |
bosko001 | 7:7ea932eb31f6 | 342 | int C_HTMLparse::httpSplitInLines( char *lines[], char * httpresp) |
bosko001 | 7:7ea932eb31f6 | 343 | { |
bosko001 | 7:7ea932eb31f6 | 344 | |
bosko001 | 7:7ea932eb31f6 | 345 | char * pch; |
bosko001 | 7:7ea932eb31f6 | 346 | int i=0; |
bosko001 | 7:7ea932eb31f6 | 347 | pch = lines[i++]= strtok (httpresp,"\n\r"); |
bosko001 | 7:7ea932eb31f6 | 348 | while (pch != NULL) |
bosko001 | 7:7ea932eb31f6 | 349 | { |
bosko001 | 7:7ea932eb31f6 | 350 | pch=lines[i++] = strtok (NULL, "\n\r"); |
bosko001 | 7:7ea932eb31f6 | 351 | } |
bosko001 | 7:7ea932eb31f6 | 352 | return i; |
bosko001 | 7:7ea932eb31f6 | 353 | } |
bosko001 | 7:7ea932eb31f6 | 354 | char * C_HTMLparse::httpFirstLine( char **descr, char *line) |
bosko001 | 7:7ea932eb31f6 | 355 | { |
bosko001 | 7:7ea932eb31f6 | 356 | char * pch; |
bosko001 | 7:7ea932eb31f6 | 357 | |
bosko001 | 7:7ea932eb31f6 | 358 | pch = strtok (line,"/ "); |
bosko001 | 7:7ea932eb31f6 | 359 | *descr = strtok (NULL, "/ "); |
bosko001 | 7:7ea932eb31f6 | 360 | return pch; |
bosko001 | 7:7ea932eb31f6 | 361 | } |
bosko001 | 7:7ea932eb31f6 | 362 | // |
bosko001 | 7:7ea932eb31f6 | 363 | //struct S_httpPostValues |
bosko001 | 7:7ea932eb31f6 | 364 | //{ |
bosko001 | 7:7ea932eb31f6 | 365 | // char *name; |
bosko001 | 7:7ea932eb31f6 | 366 | // char *value; |
bosko001 | 7:7ea932eb31f6 | 367 | //} s_hpv[100]; |
bosko001 | 7:7ea932eb31f6 | 368 | |
bosko001 | 7:7ea932eb31f6 | 369 | //struct S_httpPostValues *ps_hpv = s_hpv; |
bosko001 | 7:7ea932eb31f6 | 370 | |
bosko001 | 7:7ea932eb31f6 | 371 | int C_HTMLparse::extractPostPairs( struct S_httpPostValues ** ps_hpv, char *line) |
bosko001 | 7:7ea932eb31f6 | 372 | { |
bosko001 | 7:7ea932eb31f6 | 373 | char *lines[100]; |
bosko001 | 7:7ea932eb31f6 | 374 | char * pch; |
bosko001 | 7:7ea932eb31f6 | 375 | |
bosko001 | 7:7ea932eb31f6 | 376 | int i=0; |
bosko001 | 7:7ea932eb31f6 | 377 | pch = lines[i++]= strtok (line,"&"); |
bosko001 | 7:7ea932eb31f6 | 378 | while (pch != NULL) |
bosko001 | 7:7ea932eb31f6 | 379 | { |
bosko001 | 7:7ea932eb31f6 | 380 | pch=lines[i++] = strtok (NULL, "&\n\r"); |
bosko001 | 7:7ea932eb31f6 | 381 | } |
bosko001 | 7:7ea932eb31f6 | 382 | |
bosko001 | 7:7ea932eb31f6 | 383 | printf("linija 26 %s\n\r", lines[26]); |
bosko001 | 7:7ea932eb31f6 | 384 | for(int i=0; i<15; i++) printf("%x ", *(lines[26]+i) ); printf("\n\r\n\r"); |
bosko001 | 7:7ea932eb31f6 | 385 | |
bosko001 | 7:7ea932eb31f6 | 386 | for( int j=0; j<i; j++) |
bosko001 | 7:7ea932eb31f6 | 387 | { |
bosko001 | 7:7ea932eb31f6 | 388 | char *s = strtok(lines[j], "="); |
bosko001 | 7:7ea932eb31f6 | 389 | (*ps_hpv)[j].name = s; |
bosko001 | 7:7ea932eb31f6 | 390 | (*ps_hpv)[j].value = strtok(NULL, "="); |
bosko001 | 7:7ea932eb31f6 | 391 | } |
bosko001 | 7:7ea932eb31f6 | 392 | return i; |
bosko001 | 7:7ea932eb31f6 | 393 | } |
bosko001 | 7:7ea932eb31f6 | 394 | |
bosko001 | 7:7ea932eb31f6 | 395 | |
bosko001 | 7:7ea932eb31f6 | 396 | char * C_HTMLparse::doHTTP( char * httpcontents) |
bosko001 | 7:7ea932eb31f6 | 397 | { |
bosko001 | 7:7ea932eb31f6 | 398 | char *lines[50]; |
bosko001 | 7:7ea932eb31f6 | 399 | |
bosko001 | 7:7ea932eb31f6 | 400 | int http_i = httpSplitInLines( lines, httpcontents); |
bosko001 | 7:7ea932eb31f6 | 401 | |
bosko001 | 7:7ea932eb31f6 | 402 | char *descr; |
bosko001 | 7:7ea932eb31f6 | 403 | char *type = httpFirstLine( &descr, lines[0]); |
bosko001 | 7:7ea932eb31f6 | 404 | |
bosko001 | 7:7ea932eb31f6 | 405 | printf("type = %s descr = %s\n\r", type, descr ); |
bosko001 | 7:7ea932eb31f6 | 406 | |
bosko001 | 7:7ea932eb31f6 | 407 | int html_j=0; |
bosko001 | 7:7ea932eb31f6 | 408 | if ( !strcmp( type, "POST") ) |
bosko001 | 7:7ea932eb31f6 | 409 | { |
bosko001 | 7:7ea932eb31f6 | 410 | if( http_i >=14) |
bosko001 | 7:7ea932eb31f6 | 411 | { |
bosko001 | 7:7ea932eb31f6 | 412 | html_j = extractPostPairs( &ps_hpv, lines[14]); |
bosko001 | 7:7ea932eb31f6 | 413 | return "POST" ; |
bosko001 | 7:7ea932eb31f6 | 414 | } |
bosko001 | 7:7ea932eb31f6 | 415 | } |
bosko001 | 7:7ea932eb31f6 | 416 | else if( !strcmp(type, "GET")) |
bosko001 | 7:7ea932eb31f6 | 417 | { |
bosko001 | 7:7ea932eb31f6 | 418 | if( !strcmp(descr, "HTTP") ) return "GET_HTML"; |
bosko001 | 7:7ea932eb31f6 | 419 | else return 0; |
bosko001 | 7:7ea932eb31f6 | 420 | } |
bosko001 | 7:7ea932eb31f6 | 421 | return 0; |
bosko001 | 7:7ea932eb31f6 | 422 | } |
bosko001 | 7:7ea932eb31f6 | 423 | |
bosko001 | 7:7ea932eb31f6 | 424 | /* TEST |
bosko001 | 7:7ea932eb31f6 | 425 | |
bosko001 | 7:7ea932eb31f6 | 426 | if( !strcmp(doHTTP( hG3), "POST") ) |
bosko001 | 7:7ea932eb31f6 | 427 | |
bosko001 | 7:7ea932eb31f6 | 428 | for( int k=0; k<10; k++ ) |
bosko001 | 7:7ea932eb31f6 | 429 | printf("name= %s value= %s\n\r", (ps_hpv+k)->name, ps_hpv[k].value); |
bosko001 | 7:7ea932eb31f6 | 430 | |
bosko001 | 7:7ea932eb31f6 | 431 | return 0; |
bosko001 | 7:7ea932eb31f6 | 432 | */ |
bosko001 | 7:7ea932eb31f6 | 433 | |
bosko001 | 7:7ea932eb31f6 | 434 | // struct S_httpPostValues |
bosko001 | 7:7ea932eb31f6 | 435 | // { |
bosko001 | 7:7ea932eb31f6 | 436 | // char *name; |
bosko001 | 7:7ea932eb31f6 | 437 | // char *value; |
bosko001 | 7:7ea932eb31f6 | 438 | // } s_hpv[100]; |
bosko001 | 7:7ea932eb31f6 | 439 | |
bosko001 | 7:7ea932eb31f6 | 440 | |
bosko001 | 7:7ea932eb31f6 | 441 | void C_HTMLparse::htmlPOST_fun( void ) |
bosko001 | 7:7ea932eb31f6 | 442 | { |
bosko001 | 7:7ea932eb31f6 | 443 | for(int i = 0; i<27; i++ ) |
bosko001 | 7:7ea932eb31f6 | 444 | { |
bosko001 | 7:7ea932eb31f6 | 445 | // printf(" rb = %d name:%s = value:%s \n\r", i, s_hpv[i].name, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 446 | |
bosko001 | 7:7ea932eb31f6 | 447 | if( !strcmp( s_hpv[i].name, "ip_adresa") ) set_myIP( s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 448 | else if( !strcmp( s_hpv[i].name, "netmask") ) set_myMASK( s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 449 | else if( !strcmp( s_hpv[i].name, "gateway") ) set_myGATE( s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 450 | |
bosko001 | 7:7ea932eb31f6 | 451 | else if( !strcmp( s_hpv[i].name, "udp_server_port") ) set_myUdpPort( s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 452 | else if( !strcmp( s_hpv[i].name, "tcp_server_port") ) set_myTcpPort( s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 453 | |
bosko001 | 7:7ea932eb31f6 | 454 | else if( !strcmp( s_hpv[i].name, "udp_ip_1") ) set_UdpIP( 1, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 455 | else if( !strcmp( s_hpv[i].name, "udp_ip_2") ) set_UdpIP( 2, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 456 | else if( !strcmp( s_hpv[i].name, "udp_ip_3") ) set_UdpIP( 3, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 457 | else if( !strcmp( s_hpv[i].name, "udp_opseg_od") ) set_UdpIP( 4, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 458 | else if( !strcmp( s_hpv[i].name, "udp_opseg_do") ) set_UdpIP( 5, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 459 | |
bosko001 | 7:7ea932eb31f6 | 460 | else if( !strcmp( s_hpv[i].name, "udp_port_1") ) set_UdpPort( 1, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 461 | else if( !strcmp( s_hpv[i].name, "udp_port_2") ) set_UdpPort( 2, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 462 | else if( !strcmp( s_hpv[i].name, "udp_port_3") ) set_UdpPort( 3, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 463 | else if( !strcmp( s_hpv[i].name, "udp_port_opseg") ) set_UdpPort( 4, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 464 | |
bosko001 | 7:7ea932eb31f6 | 465 | else if( !strcmp( s_hpv[i].name, "tcp_ip_1") ) set_TcpIP( 1, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 466 | else if( !strcmp( s_hpv[i].name, "tcp_ip_2") ) set_TcpIP( 2, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 467 | else if( !strcmp( s_hpv[i].name, "tcp_ip_3") ) set_TcpIP( 3, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 468 | else if( !strcmp( s_hpv[i].name, "tcp_opseg_od") ) set_TcpIP( 4, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 469 | else if( !strcmp( s_hpv[i].name, "tcp_opseg_do") ) set_TcpIP( 5, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 470 | |
bosko001 | 7:7ea932eb31f6 | 471 | else if( !strcmp( s_hpv[i].name, "tcp_port_1") ) set_TcpPort( 1, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 472 | else if( !strcmp( s_hpv[i].name, "tcp_port_2") ) set_TcpPort( 2, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 473 | else if( !strcmp( s_hpv[i].name, "tcp_port_3") ) set_TcpPort( 3, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 474 | else if( !strcmp( s_hpv[i].name, "tcp_port_opseg") ) set_TcpPort( 4, s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 475 | |
bosko001 | 7:7ea932eb31f6 | 476 | |
bosko001 | 7:7ea932eb31f6 | 477 | else if( !strcmp( s_hpv[i].name, "baud_rate") ) set_selected_option( "baud_rate" , s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 478 | else if( !strcmp( s_hpv[i].name, "parity") ) set_selected_option( "parity" , s_hpv[i].value ); |
bosko001 | 7:7ea932eb31f6 | 479 | else if( !strcmp( s_hpv[i].name, "data_bits") ) { set_selected_option( "data_bits" , s_hpv[i].value ); } |
bosko001 | 7:7ea932eb31f6 | 480 | else if( !strcmp( s_hpv[i].name, "stop_bits") ) { set_selected_option( "stop_bits" , s_hpv[i].value ); } |
bosko001 | 7:7ea932eb31f6 | 481 | } |
bosko001 | 7:7ea932eb31f6 | 482 | |
bosko001 | 7:7ea932eb31f6 | 483 | } |
bosko001 | 7:7ea932eb31f6 | 484 | |
bosko001 | 7:7ea932eb31f6 | 485 | |
bosko001 | 7:7ea932eb31f6 | 486 | |
bosko001 | 7:7ea932eb31f6 | 487 | //ip_adresa=192.168.1.20& |
bosko001 | 7:7ea932eb31f6 | 488 | //netmask=255.255.255.0& |
bosko001 | 7:7ea932eb31f6 | 489 | //gateway=192.168.1.1& |
bosko001 | 7:7ea932eb31f6 | 490 | //udp_server_port=11000& |
bosko001 | 7:7ea932eb31f6 | 491 | //tcp_server_port=12000& |
bosko001 | 7:7ea932eb31f6 | 492 | //udp_ip_1=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 493 | //udp_ip_2=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 494 | //udp_ip_3=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 495 | //udp_opseg_od=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 496 | //udp_opseg_do=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 497 | //udp_port_1=65535& |
bosko001 | 7:7ea932eb31f6 | 498 | //udp_port_2=& |
bosko001 | 7:7ea932eb31f6 | 499 | //udp_port_3=65535& |
bosko001 | 7:7ea932eb31f6 | 500 | //udp_port_opseg=65535& |
bosko001 | 7:7ea932eb31f6 | 501 | //tcp_ip_1=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 502 | //tcp_ip_2=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 503 | //tcp_ip_3=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 504 | //tcp_opseg_od=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 505 | //tcp_opseg_do=xxx.xxx.xxx.xxx& |
bosko001 | 7:7ea932eb31f6 | 506 | //tcp_port_1=65535& |
bosko001 | 7:7ea932eb31f6 | 507 | //tcp_port_2=&tcp_port_3=65535& |
bosko001 | 7:7ea932eb31f6 | 508 | //tcp_port_opseg=65535& |
bosko001 | 7:7ea932eb31f6 | 509 | //baud_rate=9600& |
bosko001 | 7:7ea932eb31f6 | 510 | //parity=none&data_bits=8& |
bosko001 | 7:7ea932eb31f6 | 511 | //stop_bits=1 |
bosko001 | 7:7ea932eb31f6 | 512 | |
bosko001 | 7:7ea932eb31f6 | 513 | |
bosko001 | 7:7ea932eb31f6 | 514 | |
bosko001 | 7:7ea932eb31f6 | 515 | |
bosko001 | 7:7ea932eb31f6 | 516 | /*****************************************************************************/ |