示例#1
0
文件: main.c 项目: Koensw/Robot-PWS
static void cmd_alarm(BaseSequentialStream *chp, int argc, char *argv[]){
  int i = 0;

  (void)argv;
  if (argc < 1) {
    goto ERROR;
  }

  if ((argc == 1) && (strcmp(argv[0], "get") == 0)){
    rtcGetAlarm(&RTCD1, 0, &alarmspec);
    chprintf(chp, "%D%s",alarmspec," - alarm in STM internal format\r\n");
    return;
  }

  if ((argc == 2) && (strcmp(argv[0], "set") == 0)){
    i = atol(argv[1]);
    alarmspec.tv_datetime = ((i / 10) & 7 << 4) | (i % 10) | RTC_ALRMAR_MSK4 |
                            RTC_ALRMAR_MSK3 | RTC_ALRMAR_MSK2;
    rtcSetAlarm(&RTCD1, 0, &alarmspec);
    return;
  }
  else{
    goto ERROR;
  }

ERROR:
  chprintf(chp, "Usage: alarm get\r\n");
  chprintf(chp, "       alarm set N\r\n");
  chprintf(chp, "where N is alarm time in seconds\r\n");
}
示例#2
0
static void cmd_alarm(BaseSequentialStream *chp, int argc, char *argv[]){
  (void)argv;
  struct tm timp;

  if (argc < 1) {
    goto ERROR;
  }

  if ((argc == 1) && (strcmp(argv[0], "get") == 0)){
    rtcGetAlarm(&RTCD1, 0, &alarmspec);
    timp.tm_sec = alarmspec.alsec;
    timp.tm_min = alarmspec.almin;
    timp.tm_hour = alarmspec.alhour;
    timp.tm_mday = alarmspec.aldom;
    timp.tm_mon = alarmspec.almonth - 1;
    timp.tm_wday = alarmspec.aldow;
    timp.tm_year = alarmspec.alyear - 1900;
    timp.tm_yday = alarmspec.aldoy - 1;
    chprintf(chp, "%D%s",mktime(&timp)," - alarm in seconds\r\n");
    return;
  }

  if ((argc == 2) && (strcmp(argv[0], "set") == 0)){
    unix_time = (uint32_t)atol(argv[1]);
    localtime_r(&unix_time, &timp);
    alarmspec.alsec = timp.tm_sec;
    alarmspec.almin = timp.tm_min;
    alarmspec.alhour = timp.tm_hour;
    alarmspec.aldom = timp.tm_mday;
    alarmspec.almonth = timp.tm_mon + 1;
    alarmspec.aldow = timp.tm_wday;
    alarmspec.alyear = timp.tm_year + 1900;
    alarmspec.aldoy = timp.tm_yday + 1;
    rtcSetAlarm(&RTCD1, 0, &alarmspec);
    rtcSetCallback(&RTCD1, wakeup_cb);
    return;
  }
  else{
    goto ERROR;
  }

ERROR:
  chprintf(chp, "Usage: alarm get\r\n");
  chprintf(chp, "       alarm set N\r\n");
  chprintf(chp, "where N is alarm time in seconds\r\n");
}