Ejemplo n.º 1
0
Archivo: main.c Proyecto: funglaub/utop
int main(int argc, char **argv)
{
  struct sigaction action;
  int i;

  action.sa_handler = signal_handler;
  sigaction(SIGABRT, &action, NULL);
  sigaction(SIGTERM, &action, NULL);

  for(i = 1; i < argc; i++){
    if(!strcmp(argv[i], "-f")){
      global_force = 1;
    }else if(!strcmp(argv[i], "-d")){
      global_debug = 1;
    }else{
      fprintf(stderr,
              "Usage: %s [-f] [-d]\n"
              " -f: Don't prompt for lsof and strace\n"
              " -d: Debug mode\n"
              , *argv);
      return 1;
    }
  }

  extra_init();

  gui_init();

  proclist = proc_init();

  gui_run(proclist);

  gui_term();
  proc_cleanup(proclist);

  return 0;
}
Ejemplo n.º 2
0
/*f test_entry_point
 */
extern int test_entry_point()
{
    int i, j, k, l;
    int error;
    int length;
    char buffer[256];
    const t_command *cmd;
    t_command_chain cmd_chain, *chain;
    int argc;
    unsigned int args[MAX_ARGS];
 
#ifdef LINUX
    static int heap[65536];
    fprintf(stderr,"256kB heap at %p\n",heap);
#endif

    cmd_chain.cmds = monitor_cmds;
    cmd_chain.next = (t_command_chain *)0;
    chain_extra_cmds( &cmd_chain );
    uart_init();
    extra_init();
    while (1)
    {
        /*b Display the prompt
         */
        uart_tx_string( "\r\nOK > ");

        /*b Wait for incoming string, echoing each byte as it comes
         */
        length = 0;
        while (1)
        {
            if (uart_rx_poll())
            {
                char c;
                c = uart_rx_byte();
                if (c<32)
                {
                    uart_tx_nl();
                    break;
                }
                if (c==8)
                {
                    if (length>0)
                    {
                        length--;
                        uart_tx(c);
                    }
                }
                if (length<(int)(sizeof(buffer))-1)
                {
                    buffer[length++] = c;
                    uart_tx(c);
                }
            }
        }
        buffer[length]=0;

        /*b Parse the string
         */
        for (i=0; buffer[i]==' '; i++);
        cmd = (t_command *)0;
        for (chain = &cmd_chain; (!cmd) && chain; chain=chain->next)
        {
            for (j=0; (!cmd) && (chain->cmds[j].name); j++)
            {
                //fprintf(stderr,"Compare buffer %s with command %s\n", buffer, chain->cmds[j].name );
                l = 1;
                for (k=0; chain->cmds[j].name[k]; k++)
                {
                    if (chain->cmds[j].name[k] != buffer[i+k])
                    {
                        l = 0;
                        break;
                    }
                }
                if (l)
                {
                    cmd = &(chain->cmds[j]);
                    break;
                }
            }
        }
        argc=0;
        if (cmd)
        {
            while (buffer[i] && (argc<MAX_ARGS))
            {
                for (; (buffer[i]!=' ') && (buffer[i]); i++); // skip to white space
                for (; (buffer[i]==' ') && (buffer[i]); i++); // skip past white space
                if (buffer[i])
                {
                    args[argc] = 0;
                    while ((buffer[i]!=' ') && (buffer[i]))
                    {
                        args[argc] = (args[argc]<<4) | ((buffer[i]>'9') ? ((buffer[i]&0xf)+9) : (buffer[i]&0xf));
                        i++;
                    }
                    argc++;
                }
            }
        }

        /*b Obey the string
         */
        error = 1;
        if (cmd)
        {
//            fprintf(stderr,"Command %d\n", command);
            error = cmd->fn( argc, args );
        }
        if (error)
        {
            uart_tx_string_nl( "\n\rError" );
        }
    }
}
Ejemplo n.º 3
0
int main()
{
  uint8_t i = 0;
  uint8_t n = 0;
  uint8_t pos;
  char strbuf[64];
  char timebuf[16];
  uint8_t seconds_last = seconds;
  uint8_t minutes_last = minutes;
  unsigned int ch;

  // FILE uart_stream = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);
  // stdin = stdout = &uart_stream;

  // always calibrate the internal RC oscillator using external 32Khz crystal
  do_calibration();
  // OSCCAL = 55;

  rtc_init();
  key_init();
  extra_init();
  ht1632_setup(1); // use ram

#ifdef USE_UARTSYNC
  uart_init();
#else

  #ifdef USE_V0
  uart_init( UART_BAUD_SELECT(9600,F_CPU) );
  #else
  // uart_init( UART_BAUD_SELECT(38400,F_CPU) );
  uart_init( UART_BAUD_SELECT(9600,F_CPU) );
  #endif

#endif

  sei(); // turn on interrupt handler

  // strncpy(strbuf, "ready: ", 7);
  // sprintf(&strbuf[7], "%d", OSCCAL);
  // ht1632_scrollstr(strbuf, 10, 10);
  int start = 5;
  ht1632_putchar(start,1,'L'); 
  ht1632_putchar(start+6,1,'E'); 
  ht1632_putchar(start+12,1,'D'); 
  ht1632_putchar(start+18,1,'I'); 
  delay_ms(5000); 

  set_time(timebuf);
  disp_time(timebuf);

  // play tone to indicate we started
  play_tone(A5, 4); _delay_ms(5);
  play_tone(A5, 4); _delay_ms(10);

  while(1)
  {
    n = term_recvstr(BUF, BUFSIZE);

    if(n<0)
    {
      term_sendstr(PSTR("error occurred on uart\r\n"));
    }
    if(n>0)
    {
      MODE = term_check_mode(BUF,n);
      switch(MODE)
      {
        case MODE_TIMESET:
          mode_timeset(BUF,n);
          break;
        case MODE_DRAW:
          mode_draw();
          break;
        case MODE_INVALID:
        default:
          mode_msg(BUF,n);
          break;
      }
      // just to be paranoid
      stop_led_sync_timer();

      // hack to force time display
      minutes_last = minutes - 1;
    }

    if(last_button1state == 1)
    {
      demo_life(); 
      // if we come out of demo_life, we show time 
      set_time(timebuf);
      disp_time(timebuf);
    }

    if(seconds_last != seconds || last_buttonstate & BT_PRESS) 
    {
      seconds_last = seconds;

      if(minutes_last != minutes)
      {
        minutes_last = minutes;
        set_time(timebuf);
        disp_time(timebuf);
      }

      disp_bindots();
    }

    // fast cycle
    if(last_buttonstate & BT_HOLD)
    {
      while(!(PINC & (1<<BUTTON2)))
      {
        minutes++;
        update_datetime(1);
        set_time(timebuf);
        disp_time(timebuf);
        minutes_last = minutes;
        _delay_ms(20);
      }
      intcount = 0;
    }

    // while ((ASSR & (1<<OCR2BUB)) != 0) {} 
  }
}