Exemplo n.º 1
0
/**
  * @brief  Create and send a dynamic Web Page. This page contains the list of 
  *         running tasks and the number of page hits. 
  * @param  conn connection socket
  * @retval None
  */
void DynWebPage(int conn)
{
  portCHAR pagehits[10];

  memset(PAGE_BODY, 0,512);

  /* Update the hit count */
  nPageHits++;
  sprintf( pagehits, "%d", (int)nPageHits );
  strcat(PAGE_BODY, pagehits);
  strcat((char *) PAGE_BODY, "<pre><br>Name          State  Priority  Stack   Num" );
  strcat((char *) PAGE_BODY, "<br>---------------------------------------------<br>"); 
    
  /* The list of tasks and their status */
  osThreadList((unsigned char *)(PAGE_BODY + strlen(PAGE_BODY)));
  strcat((char *) PAGE_BODY, "<br><br>---------------------------------------------"); 
  strcat((char *) PAGE_BODY, "<br>B : Blocked, R : Ready, D : Deleted, S : Suspended<br>");
  
  /* Send the dynamically generated page */
  write(conn, PAGE_START, strlen((char*)PAGE_START));
  write(conn, PAGE_BODY, strlen(PAGE_BODY));
}
Exemplo n.º 2
0
static portCHAR *http_generate_platform_stats_page( void )
{
    portCHAR dynamic_text[ 128 ] = { 0 };
    portCHAR headerRow[ 128 ];
    rtems_interval elapsed_time =  rtems_clock_get_ticks_since_boot() / rtems_clock_get_ticks_per_second();
    uint32_t hours;
    uint32_t minutes;
    uint32_t seconds;

    hours = elapsed_time / 3600UL;
    elapsed_time -= hours * 3600UL;
    minutes = elapsed_time / 60;
    elapsed_time -= minutes * 60;
    seconds = elapsed_time;

    memset( DYNAMIC_PAGE_CONTENT, 0, sizeof( DYNAMIC_PAGE_CONTENT ) );

    /* Update the hit count */
    nPageHits++;
    strncat( DYNAMIC_PAGE_CONTENT, PAGE_HEADER_DYNAMIC,
             sizeof( DYNAMIC_PAGE_CONTENT ) - strlen( DYNAMIC_PAGE_CONTENT ) );
    snprintf( dynamic_text,
              sizeof( dynamic_text ),
              "Page refresh count %d",
              (int) nPageHits );
    strncat( DYNAMIC_PAGE_CONTENT,
             dynamic_text,
             sizeof( DYNAMIC_PAGE_CONTENT ) - strlen( DYNAMIC_PAGE_CONTENT ) );

    snprintf( dynamic_text,
              sizeof( dynamic_text ),
              "<p>Number of Ethernet Packets (RX: %lu, TX %lu)",
              stm32f_ethernet_get_num_rx_msg(),
              stm32f_ethernet_get_num_tx_msg() );
    strncat( DYNAMIC_PAGE_CONTENT,
             dynamic_text,
             sizeof( DYNAMIC_PAGE_CONTENT ) - strlen( DYNAMIC_PAGE_CONTENT ) );

    snprintf( dynamic_text,
              sizeof( dynamic_text ),
              "<p>Uptime: %lu hours, %lu minutes, %lu second",  hours, minutes, seconds);
    strncat( DYNAMIC_PAGE_CONTENT,
             dynamic_text,
             sizeof( DYNAMIC_PAGE_CONTENT ) - strlen( DYNAMIC_PAGE_CONTENT ) );

#ifdef REPORT_STACK_USAGE
    static uint32_t last_stack_report = 0;

    if(last_stack_report != minutes) {
        rtems_stack_checker_report_usage();
        last_stack_report = minutes;
    }
#endif

    snprintf( headerRow,
              sizeof( headerRow ),
              "<pre><br>%4s\t%16s\t%8s\t%10s\t%8s",
              "Name",
              "Task State",
              "Stk Addr",
              "Stk Sz",
              "rtems_id" );
    strncat( (char *) DYNAMIC_PAGE_CONTENT, headerRow,
             sizeof( DYNAMIC_PAGE_CONTENT ) - strlen( DYNAMIC_PAGE_CONTENT ) );
    strncat( (char *) DYNAMIC_PAGE_CONTENT,
             "<br>------------------------------------------------------------------------------<br>",
             sizeof( DYNAMIC_PAGE_CONTENT ) - strlen( DYNAMIC_PAGE_CONTENT ) );

    /* The list of tasks and their status */
    osThreadList( (unsigned char *) ( DYNAMIC_PAGE_CONTENT +
                                      strlen( DYNAMIC_PAGE_CONTENT ) ) );
    strncat( (char *) DYNAMIC_PAGE_CONTENT,
             "<br>--------------------------------------------------------------------------</pre></body></html>",
             sizeof( DYNAMIC_PAGE_CONTENT ) - strlen( DYNAMIC_PAGE_CONTENT ) );

    return (portCHAR *) DYNAMIC_PAGE_CONTENT;
}