]> git.gag.com Git - fw/sdcc/blobdiff - sim/ucsim/cmd.src/timer.cc
Redesigned option handling, start of libtool introduction
[fw/sdcc] / sim / ucsim / cmd.src / timer.cc
index 694c43da20bfccba0bc9501e14bb91b41cb76cd4..e72931916991983976700ef4ee387e6d41935706 100644 (file)
@@ -34,8 +34,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "simcl.h"
 
 // local
-#include "cmdsetcl.h"
-#include "newcmdcl.h"
+#include "timercl.h"
 
 
 /*
@@ -43,58 +42,59 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
  *----------------------------------------------------------------------------
  */
 
-int
-cl_timer_cmd::do_work(class cl_sim *sim,
-                     class cl_cmdline *cmdline, class cl_console *con)
+//int
+//cl_timer_cmd::do_work(class cl_sim *sim,
+//                   class cl_cmdline *cmdline, class cl_console *con)
+COMMAND_DO_WORK_UC(cl_timer_cmd)
 {
   char *s;
 
   if (cmdline->param(0) == 0)
     {
       if (long_help)
-       con->printf("%s\n", long_help);
+       con->dd_printf("%s\n", long_help);
       else
-       con->printf("What to do?\n");
+       con->dd_printf("What to do?\n");
       return(0);
     }
   if ((s= cmdline->param(0)->get_svalue()))
     {
       if (cmdline->param(1) == 0)
        {
-         con->printf("Timer number is missing\n");
+         con->dd_printf("Timer number is missing\n");
          return(0);
        }
-      set_ticker(sim, cmdline->param(1));
+      set_ticker(uc, cmdline->param(1));
       if (strstr(s, "c") == s ||
          strstr(s, "m") == s ||
          strstr(s, "a") == s)
-       return(add(sim, cmdline, con));
+       return(add(uc, cmdline, con));
       else if (strstr(s, "d") == s)
-       return(del(sim, cmdline, con));
+       return(del(uc, cmdline, con));
       else if (strstr(s, "g") == s)
-       return(get(sim, cmdline, con));
+       return(get(uc, cmdline, con));
       else if (strstr(s, "r") == s)
-       return(run(sim, cmdline, con));
+       return(run(uc, cmdline, con));
       else if (strstr(s, "s") == s)
-       return(stop(sim, cmdline, con));
+       return(stop(uc, cmdline, con));
       else if (strstr(s, "v") == s)
-       return(val(sim, cmdline, con));
+       return(val(uc, cmdline, con));
       else
-       con->printf("Undefined timer command: \"%s\". Try \"help timer\"\n",
+       con->dd_printf("Undefined timer command: \"%s\". Try \"help timer\"\n",
                    s);
     }
   return(0);
 }
 
 void
-cl_timer_cmd::set_ticker(class cl_sim *sim,
+cl_timer_cmd::set_ticker(class cl_uc *uc,
                         class cl_cmd_arg *param)
 {
-  if ((name= param->get_svalue()))
-    ticker= sim->uc->get_counter(name);
+  if (set_name(param->get_svalue()))
+    ticker= uc->get_counter(get_name());
   else
     if (param->get_ivalue(&what))
-      ticker= sim->uc->get_counter(what);
+      ticker= uc->get_counter(what);
 }
 
 /*
@@ -102,7 +102,7 @@ cl_timer_cmd::set_ticker(class cl_sim *sim,
  */
 
 int
-cl_timer_cmd::add(class cl_sim *sim,
+cl_timer_cmd::add(class cl_uc *uc,
                  class cl_cmdline *cmdline, class cl_console *con)
 {
   class cl_cmd_arg *params[4]= { cmdline->param(0),
@@ -111,42 +111,42 @@ cl_timer_cmd::add(class cl_sim *sim,
                                 cmdline->param(3) };
   long dir= +1, in_isr= 0;
   
-  if (!name &&
+  if (!get_name() &&
       what < 1)
     {
-      con->printf("Error: Timer id must be greater then zero or a string\n");
+      con->dd_printf("Error: Timer id must be greater then zero or a string\n");
       return(DD_FALSE);
     }
   if (ticker)
     {
-      if (name)
-       con->printf("Error: Timer \"%s\" already exists\n", name);
+      if (get_name())
+       con->dd_printf("Error: Timer \"%s\" already exists\n", get_name());
       else
-       con->printf("Error: Timer %d already exists\n", what);
+       con->dd_printf("Error: Timer %d already exists\n", what);
       return(0);
     }
   if (params[2])
     if (!params[2]->get_ivalue(&dir))
       {
-       con->printf("Error: Wrong direction\n");
+       con->dd_printf("Error: Wrong direction\n");
        return(DD_FALSE);
       }
   if (params[3])
     if (!params[3]->get_ivalue(&in_isr))
       {
-       con->printf("Error: Wrong parameter\n");
+       con->dd_printf("Error: Wrong parameter\n");
        return(DD_FALSE);
       }
 
-  if (name)
+  if (get_name())
     {
-      ticker= new cl_ticker(dir, in_isr, name);
-      sim->uc->add_counter(ticker, name);
+      ticker= new cl_ticker(dir, in_isr, get_name());
+      uc->add_counter(ticker, get_name());
     }
   else
     {
       ticker= new cl_ticker(dir, in_isr, 0);
-      sim->uc->add_counter(ticker, what);
+      uc->add_counter(ticker, what);
     }
 
   return(DD_FALSE);
@@ -157,21 +157,21 @@ cl_timer_cmd::add(class cl_sim *sim,
  */
 
 int
-cl_timer_cmd::del(class cl_sim *sim,
+cl_timer_cmd::del(class cl_uc *uc,
                  class cl_cmdline *cmdline, class cl_console *con)
 {
   if (!ticker)
     {
-      if (name)
-       con->printf("Timer \"%s\" does not exist\n", name);
+      if (get_name())
+       con->dd_printf("Timer \"%s\" does not exist\n", get_name());
       else
-       con->printf("Timer %d does not exist\n", what);
+       con->dd_printf("Timer %d does not exist\n", what);
       return(0);
     }
-  if (name)
-    sim->uc->del_counter(name);
+  if (get_name())
+    uc->del_counter(get_name());
   else
-    sim->uc->del_counter(what);
+    uc->del_counter(what);
 
   return(0);
 }
@@ -181,21 +181,21 @@ cl_timer_cmd::del(class cl_sim *sim,
  */
 
 int
-cl_timer_cmd::get(class cl_sim *sim,
+cl_timer_cmd::get(class cl_uc *uc,
                  class cl_cmdline *cmdline, class cl_console *con)
 {
   if (ticker)
-    ticker->dump(what, sim->uc->xtal, con);
+    ticker->dump(what, uc->xtal, con);
   else
     {
-      sim->uc->ticks->dump(0, sim->uc->xtal, con);
-      sim->uc->isr_ticks->dump(0, sim->uc->xtal, con);
-      sim->uc->idle_ticks->dump(0, sim->uc->xtal, con);
-      for (what= 0; what < sim->uc->counters->count; what++)
+      uc->ticks->dump(0, uc->xtal, con);
+      uc->isr_ticks->dump(0, uc->xtal, con);
+      uc->idle_ticks->dump(0, uc->xtal, con);
+      for (what= 0; what < uc->counters->count; what++)
        {
-         ticker= sim->uc->get_counter(what);
+         ticker= uc->get_counter(what);
          if (ticker)
-           ticker->dump(what, sim->uc->xtal, con);
+           ticker->dump(what, uc->xtal, con);
        }
     }
 
@@ -207,15 +207,15 @@ cl_timer_cmd::get(class cl_sim *sim,
  */
 
 int
-cl_timer_cmd::run(class cl_sim *sim,
+cl_timer_cmd::run(class cl_uc *uc,
                  class cl_cmdline *cmdline, class cl_console *con)
 {
   if (!ticker)
     {
-      if (name)
-       con->printf("Timer %d does not exist\n", name);
+      if (get_name())
+       con->dd_printf("Timer %d does not exist\n", get_name());
       else
-       con->printf("Timer %d does not exist\n", what);
+       con->dd_printf("Timer %d does not exist\n", what);
       return(0);
     }
   ticker->options|= TICK_RUN;
@@ -228,15 +228,15 @@ cl_timer_cmd::run(class cl_sim *sim,
  */
 
 int
-cl_timer_cmd::stop(class cl_sim *sim,
+cl_timer_cmd::stop(class cl_uc *uc,
                   class cl_cmdline *cmdline, class cl_console *con)
 {
   if (!ticker)
     {
-      if (name)
-       con->printf("Timer %d does not exist\n", name);
+      if (get_name())
+       con->dd_printf("Timer %d does not exist\n", get_name());
       else
-       con->printf("Timer %d does not exist\n", what);
+       con->dd_printf("Timer %d does not exist\n", what);
       return(0);
     }
   ticker->options&= ~TICK_RUN;
@@ -250,7 +250,7 @@ cl_timer_cmd::stop(class cl_sim *sim,
  */
 
 int
-cl_timer_cmd::val(class cl_sim *sim,
+cl_timer_cmd::val(class cl_uc *uc,
                  class cl_cmdline *cmdline, class cl_console *con)
 {
   class cl_cmd_arg *params[4]= { cmdline->param(0),
@@ -260,21 +260,21 @@ cl_timer_cmd::val(class cl_sim *sim,
   
   if (!ticker)
     {
-      if (name)
-       con->printf("Error: Timer %d does not exist\n", name);
+      if (get_name())
+       con->dd_printf("Error: Timer %d does not exist\n", get_name());
       else
-       con->printf("Error: Timer %d does not exist\n", what);
+       con->dd_printf("Error: Timer %d does not exist\n", what);
       return(0);
     }
   if (params[2])
     {
-      con->printf("Error: Value is missing\n");
+      con->dd_printf("Error: Value is missing\n");
       return(DD_FALSE);
     }
   long val;
   if (!params[2]->get_ivalue(&val))
     {
-      con->printf("Error: Wrong parameter\n");
+      con->dd_printf("Error: Wrong parameter\n");
       return(DD_FALSE);
     }
   ticker->ticks= val;