int do_date (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { struct rtc_time tm; int rcode = 0; int old_bus; /* switch to correct I2C bus */ old_bus = I2C_GET_BUS(); I2C_SET_BUS(CONFIG_SYS_RTC_BUS_NUM); switch (argc) { case 2: /* set date & time */ if (strcmp(argv[1],"reset") == 0) { puts ("Reset RTC...\n"); rtc_reset (); } else { /* initialize tm with current time */ rcode = rtc_get (&tm); if(!rcode) { /* insert new date & time */ if (mk_date (argv[1], &tm) != 0) { puts ("## Bad date format\n"); break; } /* and write to RTC */ rcode = rtc_set (&tm); if(rcode) puts("## Set date failled\n"); } else { puts("## Get date failled\n"); } } /* FALL TROUGH */ case 1: /* get date & time */ rcode = rtc_get (&tm); if (rcode) { puts("## Get date failled\n"); break; } printf ("Date: %4d-%02d-%02d (%sday) Time: %2d:%02d:%02d\n", tm.tm_year, tm.tm_mon, tm.tm_mday, (tm.tm_wday<0 || tm.tm_wday>6) ? "unknown " : RELOC(weekdays[tm.tm_wday]), tm.tm_hour, tm.tm_min, tm.tm_sec); break; default: cmd_usage(cmdtp); rcode = 1; } /* switch back to original I2C bus */ I2C_SET_BUS(old_bus); return rcode; }
static char *_mkfield(char *field, T_PkgType *tp) { register T_PkgType *typ; register char *cp; if(!field || !tp ) return field; if(tp->offset<0) set_offset(tp); cp=field; for(typ=tp;typ->type>=0;typ++) { if(typ->bindtype & NOSELECT) continue; switch(typ->type) { case CH_MINUTS: case CH_DATE: case CH_JUL: case CH_TIME: case CH_USEC: if(typ->format) { cp=mk_date(cp,skipblk((char *)typ->name),typ->format); /* char *p0; p0=skipblk(typ->name); cp=stpcpy(ext_copy(stpcpy(strtcpy(stpcpy(cp,"TO_CHAR("),&p0,' '),",\'"),typ->format),"\') "); if(*p0==' ') cp=stpcpy(cp,++p0); else cp=stpcpy(cp,typ->name); */ break; } default: cp=stpcpy(cp,typ->name); break; } *cp++=','; *cp=0; } *(--cp)=0; return cp; }
/* * generate a particular table */ void gen_tbl (int tnum, long start, long count, long upd_num) { static order_t o; supplier_t supp; customer_t cust; part_t part; #ifdef SSBM date_t dt; #else code_t code; #endif static int completed = 0; static int init = 0; long i; int rows_per_segment=0; int rows_this_segment=-1; int residual_rows=0; if (insert_segments) { rows_per_segment = count / insert_segments; residual_rows = count - (rows_per_segment * insert_segments); } if (init == 0) { INIT_HUGE(o.okey); for (i=0; i < O_LCNT_MAX; i++) #ifdef SSBM INIT_HUGE(o.lineorders[i].okey); #else INIT_HUGE(o.l[i].okey); #endif init = 1; } for (i = start; count; count--, i++) { LIFENOISE (1000, i); row_start(tnum); switch (tnum) { case LINE: #ifdef SSBM #else case ORDER: case ORDER_LINE: #endif mk_order (i, &o, upd_num % 10000); if (insert_segments && (upd_num > 0)) if((upd_num / 10000) < residual_rows) { if((++rows_this_segment) > rows_per_segment) { rows_this_segment=0; upd_num += 10000; } } else { if((++rows_this_segment) >= rows_per_segment) { rows_this_segment=0; upd_num += 10000; } } if (set_seeds == 0) if (validate) tdefs[tnum].verify(&o, 0); else tdefs[tnum].loader[direct] (&o, upd_num); break; case SUPP: mk_supp (i, &supp); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&supp, 0); else tdefs[tnum].loader[direct] (&supp, upd_num); break; case CUST: mk_cust (i, &cust); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&cust, 0); else tdefs[tnum].loader[direct] (&cust, upd_num); break; #ifdef SSBM case PART: #else case PSUPP: case PART: case PART_PSUPP: #endif mk_part (i, &part); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&part, 0); else tdefs[tnum].loader[direct] (&part, upd_num); break; #ifdef SSBM case DATE: mk_date (i, &dt); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&dt, 0); else tdefs[tnum].loader[direct] (&dt, 0); break; #else case NATION: mk_nation (i, &code); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&code, 0); else tdefs[tnum].loader[direct] (&code, 0); break; case REGION: mk_region (i, &code); if (set_seeds == 0) if (validate) tdefs[tnum].verify(&code, 0); else tdefs[tnum].loader[direct] (&code, 0); break; #endif } row_stop(tnum); if (set_seeds && (i % tdefs[tnum].base) < 2) { printf("\nSeeds for %s at rowcount %ld\n", tdefs[tnum].comment, i); dump_seeds(tnum); } } completed |= 1 << tnum; }
static int do_date(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { struct rtc_time tm; int rcode = 0; int old_bus __maybe_unused; /* switch to correct I2C bus */ #ifdef CONFIG_DM_RTC struct udevice *dev; rcode = uclass_get_device(UCLASS_RTC, 0, &dev); if (rcode) { printf("Cannot find RTC: err=%d\n", rcode); return CMD_RET_FAILURE; } #elif defined(CONFIG_SYS_I2C) old_bus = i2c_get_bus_num(); i2c_set_bus_num(CONFIG_SYS_RTC_BUS_NUM); #else old_bus = I2C_GET_BUS(); I2C_SET_BUS(CONFIG_SYS_RTC_BUS_NUM); #endif switch (argc) { case 2: /* set date & time */ if (strcmp(argv[1],"reset") == 0) { puts ("Reset RTC...\n"); #ifdef CONFIG_DM_RTC rcode = dm_rtc_reset(dev); if (!rcode) rcode = dm_rtc_set(dev, &default_tm); #else rtc_reset(); rcode = rtc_set(&default_tm); #endif if (rcode) puts("## Failed to set date after RTC reset\n"); } else { /* initialize tm with current time */ #ifdef CONFIG_DM_RTC rcode = dm_rtc_get(dev, &tm); #else rcode = rtc_get(&tm); #endif if (!rcode) { /* insert new date & time */ if (mk_date(argv[1], &tm) != 0) { puts ("## Bad date format\n"); break; } /* and write to RTC */ #ifdef CONFIG_DM_RTC rcode = dm_rtc_set(dev, &tm); #else rcode = rtc_set(&tm); #endif if (rcode) { printf("## Set date failed: err=%d\n", rcode); } } else { puts("## Get date failed\n"); } } /* FALL TROUGH */ case 1: /* get date & time */ #ifdef CONFIG_DM_RTC rcode = dm_rtc_get(dev, &tm); #else rcode = rtc_get(&tm); #endif if (rcode) { puts("## Get date failed\n"); break; } printf ("Date: %4d-%02d-%02d (%sday) Time: %2d:%02d:%02d\n", tm.tm_year, tm.tm_mon, tm.tm_mday, (tm.tm_wday<0 || tm.tm_wday>6) ? "unknown " : RELOC(weekdays[tm.tm_wday]), tm.tm_hour, tm.tm_min, tm.tm_sec); break; default: rcode = CMD_RET_USAGE; } /* switch back to original I2C bus */ #ifdef CONFIG_SYS_I2C i2c_set_bus_num(old_bus); #elif !defined(CONFIG_DM_RTC) I2C_SET_BUS(old_bus); #endif return rcode ? CMD_RET_FAILURE : 0; }