📄 cgi_8c-source.html
字号:
00360 00361 fputs_P(thdr, stream);00362 00363 <a class="code" href="group__xg_c_g_i.html#ga7">HtmlInOutPortRow</a>(stream, <span class="charliteral">'B'</span>, inb(PINB), inb(PORTB), inb(DDRB), 0xFF);00364 <a class="code" href="group__xg_c_g_i.html#ga6">HtmlSeparatorRow</a>(stream, 10, 5);00365 <a class="code" href="group__xg_c_g_i.html#ga7">HtmlInOutPortRow</a>(stream, <span class="charliteral">'D'</span>, inb(PIND), inb(PORTD), inb(DDRD), 0xFF);00366 <a class="code" href="group__xg_c_g_i.html#ga6">HtmlSeparatorRow</a>(stream, 10, 5);00367 <a class="code" href="group__xg_c_g_i.html#ga7">HtmlInOutPortRow</a>(stream, <span class="charliteral">'E'</span>, inb(PINE), inb(PORTE), inb(DDRE), 0xDC);00368 <a class="code" href="group__xg_c_g_i.html#ga6">HtmlSeparatorRow</a>(stream, 10, 5);00369 00370 fputs(<span class="stringliteral">"<tr><th>F</th><td>Status</td>"</span>, stream);00371 <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINF), inb(PINF), 0);00372 fputs(<span class="stringliteral">"</tr>\r\n"</span>, stream);00373 00374 fputs_P(foot, stream);00375 fflush(stream);00376 <span class="keywordflow">return</span> 0;00377 }00378 00379 <span class="comment"></span>00380 <span class="comment">/*!</span>00381 <span class="comment"> * \brief CGI callback function to display the status of the CPU ports.</span>00382 <span class="comment"> *</span>00383 <span class="comment"> * Creates HTML code to show the status of CPU ports B, D, E and F.</span>00384 <span class="comment"> * The page will be automatically refreshed every 5 seconds.</span>00385 <span class="comment"> *</span>00386 <span class="comment"> * \image html sport.gif</span>00387 <span class="comment"> *</span>00388 <span class="comment"> *</span>00389 <span class="comment"> *</span>00390 <span class="comment"> * This function is called by the HTTP module when a browser requests</span>00391 <span class="comment"> * a CGI function, for which this routine has been registered via</span>00392 <span class="comment"> * NutRegisterCgi().</span>00393 <span class="comment"> *</span>00394 <span class="comment"> * \param stream Stream device of the HTTP connection.</span>00395 <span class="comment"> * \param req Pointer to the CGI REQUEST structure. Detailed information</span>00396 <span class="comment"> * is available in the Nut/OS API documentation.</span>00397 <span class="comment"> *</span>00398 <span class="comment"> * \return 0 on success or -1 in case of any failure.</span>00399 <span class="comment"> */</span><a name="l00400"></a><a class="code" href="group__xg_c_g_i.html#ga11">00400</a> <span class="keywordtype">int</span> <a class="code" href="group__xg_c_g_i.html#ga11">CpuPortStatus</a>(FILE * stream, REQUEST * req)00401 {00402 <span class="keyword">static</span> prog_char head[] = <span class="comment">/* */</span>00403 <span class="stringliteral">"<html>"</span> <span class="comment">/* */</span>00404 <span class="stringliteral">"<head>"</span> <span class="comment">/* */</span>00405 <span class="stringliteral">"<meta http-equiv=\"refresh\" content=\"5; URL="</span> <a class="code" href="group__xg_w_p_defs.html#ga9">PORT_STATUS_CGI</a> <span class="stringliteral">"\">"</span> <span class="comment">/* */</span>00406 <span class="stringliteral">"<title>Ethernut CPU Port Status</title>"</span> <span class="comment">/* */</span>00407 <span class="stringliteral">"</head>"</span> <span class="comment">/* */</span>00408 <span class="stringliteral">"<body bgcolor=\"#C7D0D9\"><a href=\"/\">"</span> <span class="comment">/* */</span>00409 <span class="stringliteral">"<img src=\"/enmini.gif\" border=\"0\" width=\"70\" height=\"17\">"</span> <span class="comment">/* */</span>00410 <span class="stringliteral">"</a><div align=\"center\">"</span> <span class="comment">/* */</span>00411 <span class="stringliteral">"<table border=\"1\" cellspacing=\"0\">\r\n"</span> <span class="comment">/* */</span>00412 <span class="stringliteral">"<thead><tr><th rowspan=\"2\"> PORT </th>"</span> <span class="comment">/* */</span>00413 <span class="stringliteral">"<th colspan=\"8\">Bit</th></tr>"</span> <span class="comment">/* */</span>00414 <span class="stringliteral">"<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th>"</span> <span class="comment">/* */</span>00415 <span class="stringliteral">"<th>2</th><th>1</th><th>0</th></tr>"</span> <span class="comment">/* */</span>00416 <span class="stringliteral">"</thead><tfoot>\r\n"</span>;00417 00418 NutHttpSendHeaderTop(stream, req, 200, <span class="stringliteral">"Ok"</span>);00419 NutHttpSendHeaderBot(stream, <span class="stringliteral">"text/html"</span>, -1);00420 00421 fputs_P(head, stream);00422 00423 fputs(<span class="stringliteral">"<tr><th>B</th>"</span>, stream);00424 <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINB), inb(PORTB), inb(DDRB));00425 fputs(<span class="stringliteral">"</tr>\r\n"</span>, stream);00426 00427 fputs(<span class="stringliteral">"<tr><th>D</th>"</span>, stream);00428 <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PIND), inb(PORTD), inb(DDRD));00429 fputs(<span class="stringliteral">"</tr>\r\n"</span>, stream);00430 00431 fputs(<span class="stringliteral">"<tr><th>E</th>"</span>, stream);00432 <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINE), inb(PORTE), inb(DDRE));00433 fputs(<span class="stringliteral">"</tr>\r\n"</span>, stream);00434 00435 fputs(<span class="stringliteral">"<tr><th>F</th>"</span>, stream);00436 <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINF), inb(PINF), 0);00437 fputs(<span class="stringliteral">"</tr>\r\n"</span>, stream);00438 00439 fputs(<span class="stringliteral">"</tfoot></table><br></div></body>\r\n</html>"</span>, stream);00440 fflush(stream);00441 <span class="keywordflow">return</span> 0;00442 }00443 00444 <span class="comment"></span>00445 <span class="comment">/*!</span>00446 <span class="comment"> * \brief CGI callback function to control a shift register output board.</span>00447 <span class="comment"> *</span>00448 <span class="comment"> * Creates HTML code to show the status of any attached shift register</span>00449 <span class="comment"> * output board plus a HTML form to modify the current relay status</span>00450 <span class="comment"> * via checkboxes.</span>00451 <span class="comment"> *</span>00452 <span class="comment"> * The resulting HTML code is send back to the browser. If the submit</span>00453 <span class="comment"> * button is clicked on this page, this function will be called again</span>00454 <span class="comment"> * to process the checkboxes and display the updated status.</span>00455 <span class="comment"> *</span>00456 <span class="comment"> * \image html relay.gif</span>00457 <span class="comment"> *</span>00458 <span class="comment"> *</span>00459 <span class="comment"> *</span>00460 <span class="comment"> * This function is called by the HTTP module when a browser requests</span>00461 <span class="comment"> * a CGI function, for which this routine has been registered via</span>00462 <span class="comment"> * NutRegisterCgi().</span>00463 <span class="comment"> *</span>00464 <span class="comment"> * \param stream Stream device of the HTTP connection.</span>00465 <span class="comment"> * \param req Pointer to the CGI REQUEST structure. Detailed information</span>00466 <span class="comment"> * is available in the Nut/OS API documentation.</span>00467 <span class="comment"> *</span>00468 <span class="comment"> * \return 0 on success or -1 in case of any failure.</span>00469 <span class="comment"> */</span><a name="l00470"></a><a class="code" href="group__xg_c_g_i.html#ga12">00470</a> <span class="keywordtype">int</span> <a class="code" href="group__xg_c_g_i.html#ga12">SpiRelayControl</a>(FILE * stream, REQUEST * req)00471 {00472 u_char i;00473 <span class="keyword">static</span> prog_char head[] = <span class="stringliteral">"<html>"</span> <span class="comment">/* */</span>00474 <span class="stringliteral">"<head>"</span> <span class="comment">/* */</span>00475 <span class="stringliteral">"<meta http-equiv=\"expires\" content=\"0\">"</span> <span class="comment">/* */</span>00476 <span class="stringliteral">"<title>Ethernut Shift Register Output</title>"</span> <span class="comment">/* */</span>00477 <span class="stringliteral">"</head>"</span> <span class="comment">/* */</span>00478 <span class="stringliteral">"<body bgcolor=\"#C7D0D9\"><a href=\"/\">"</span> <span class="comment">/* */</span>00479 <span class="stringliteral">"<img src=\"/enmini.gif\" border=\"0\" width=\"70\" height=\"17\">"</span> <span class="comment">/* */</span>00480 <span class="stringliteral">"</a><div align=\"center\">"</span>;00481 <span class="keyword">static</span> prog_char foot[] = <span class="stringliteral">"</tfoot></table><br>"</span> <span class="comment">/* */</span>00482 <span class="stringliteral">" <input type=\"submit\" value=\" Set \"> "</span> <span class="comment">/* */</span>00483 <span class="stringliteral">" <input type=\"reset\" value=\" Cancel \"> "</span> <span class="comment">/* */</span>00484 <span class="stringliteral">"</form>\r\n"</span>;00485 00486 <span class="keywordflow">if</span> (<a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a> == 255)00487 SpiDigitalInit(&<a class="code" href="group__xg_c_g_i.html#ga0">spi_ni</a>, &<a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>);00488 00489 NutHttpSendHeaderTop(stream, req, 200, <span class="stringliteral">"Ok"</span>);00490 NutHttpSendHeaderBot(stream, <span class="stringliteral">"text/html"</span>, -1);00491 00492 fputs_P(head, stream);00493 00494 <span class="keywordflow">if</span> (<a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>) {00495 <span class="keywordflow">if</span> (req->req_query)00496 <a class="code" href="group__xg_c_g_i.html#ga9">ProcessCgiRelayRequest</a>(req->req_query);00497 00498 fputs(<span class="stringliteral">"<form action=\""</span> <a class="code" href="group__xg_w_p_defs.html#ga10">RELAY_CONTROL_CGI</a> <span class="stringliteral">"\" enctype=\"text/plain\">"</span> <span class="comment">/* */</span>00499 <span class="stringliteral">"<table border=\"1\" cellspacing=\"0\">\r\n"</span> <span class="comment">/* */</span>00500 <span class="stringliteral">"<thead><tr><th> </th><th colspan=\""</span>, stream);00501 fprintf(stream, <span class="stringliteral">"%u"</span>, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>);00502 fputs(<span class="stringliteral">"\">Relay</th></tr><tr><td> </td>"</span>, stream);00503 <span class="keywordflow">for</span> (i = 1; i <= <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>; i++)00504 fprintf(stream, <span class="stringliteral">"<th>%u</th>"</span>, i);00505 fputs(<span class="stringliteral">"</tr></thead><tfoot>\r\n"</span>, stream);00506 00507 fputs(<span class="stringliteral">"<tr><td> </td>"</span>, stream);00508 <span class="keywordflow">if</span> (<a class="code" href="group__xg_c_g_i.html#ga3">relay_known</a>)00509 <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>, 0, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, 0xFFFFFFFF);00510 <span class="keywordflow">else</span>00511 <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>, 0, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, ~<a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, 0xFFFFFFFF);00512 fputs(<span class="stringliteral">"</tr>\r\n"</span>, stream);00513 00514 fputs(<span class="stringliteral">"<tr><td>On</td>"</span>, stream);00515 <a class="code" href="group__xg_c_g_i.html#ga5">HtmlCheckboxRow</a>(stream, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>, 0, <span class="stringliteral">"S"</span>, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, 0xFFFFFFFF);00516 fputs(<span class="stringliteral">"</tr>\r\n"</span>, stream);00517 00518 fputs_P(foot, stream);00519 } <span class="keywordflow">else</span>00520 fputs(<span class="stringliteral">"No Outputs"</span>, stream);00521 fputs(<span class="stringliteral">"</div></body>\r\n</html>"</span>, stream);00522 fflush(stream);00523 <span class="keywordflow">return</span> 0;00524 }00525 <span class="comment"></span>00526 <span class="comment">/*!</span>00527 <span class="comment"> * \brief CGI callback function to query a shift register input board.</span>00528 <span class="comment"> *</span>00529 <span class="comment"> * This function is called by the HTTP helper routines when a browser requests</span>00530 <span class="comment"> * a CGI function, for which this routine has been registered via</span>00531 <span class="comment"> * NutRegisterCgi().</span>00532 <span class="comment"> *</span>00533 <span class="comment"> * \image html opto.gif</span>00534 <span class="comment"> *</span>00535 <span class="comment"> *</span>00536 <span class="comment"> *</span>00537 <span class="comment"> * Creates HTML code to show the status of the optically isolated inputs</span>00538 <span class="comment"> * of an attached input shift register board. The page will be automatically </span>00539 <span class="comment"> * refreshed every 5 seconds.</span>00540 <span class="comment"> *</span>00541 <span class="comment"> * \param stream Stream device of the HTTP connection.</span>00542 <span class="comment"> * \param req Pointer to the CGI REQUEST structure. Detailed information</span>00543 <span class="comment"> * is available in the Nut/OS API documentation.</span>00544 <span class="comment"> *</span>00545 <span class="comment"> * \return 0 on success or -1 in case of any failure.</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -