54 static int system_info(
int argc,
uchar *argv[])
56 extern const char os_version[];
57 extern const char cpu_name[];
58 extern const char arch_name[];
59 extern const char system_name[];
60 extern const char build_date[];
61 extern const char build_time[];
63 tprintf(
"Version : %s\n", os_version);
64 tprintf(
"CPU ARCH : %s\n", arch_name);
65 tprintf(
"CPU NAME : %s\n", cpu_name);
66 tprintf(
"SYSTEM : %s\n", system_name);
67 tprintf(
"Build date : %s %s\n", build_time, build_date);
86 .command = system_info,
87 .manual_str =
"Print system info" 93 static int timer_check_time(
int argc,
uchar *argv[])
101 tprintf(
"Kernel = %16lld ", ktime);
102 tprintf(
"System = %16lld.%03lld ", utime/1000, utime%1000);
103 tprintf(
"diff = %8d %8lld\n", (
int)(ktime - lktime), utime/1000 - ktime);
105 if(
cwait(1000) != 0) {
124 .
name =
"timercheck",
125 .command = timer_check_time,
126 .manual_str =
"Kerne timer & system time check" 132 static int com_kernel_time(
int argc,
uchar *argv[])
136 tprintf(
"Kernel Time : %14lld (ms)\n", ktime);
150 .
name =
"kerneltime",
151 .command = com_kernel_time,
152 .manual_str =
"Print kernel time" 155 static int sys_time(
int argc,
uchar *argv[])
159 tprintf(
"System Time : %14lld.%03lld (ms)\n", kutime/1000, kutime%1000);
175 .manual_str =
"Print System time" 181 static int datetime(
int argc,
uchar *argv[])
192 tprintf(
"UNIX time : %lld.%03d (sec)\n", systime.
sec, systime.
usec/1000);
209 .manual_str =
"Print datetime" 215 static int setdate(
int argc,
uchar *argv[]);
223 .usage_str =
"<year> <month> <day> <hour> <min> <sec> [msec]>",
224 .manual_str =
"Set datetime" 227 static int setdate(
int argc,
uchar *argv[])
234 print_command_usage(&com_sys_setdate);
264 #ifdef GSC_DEV_ENABLE_RTC 268 static int rtcdate(
int argc,
uchar *argv[]);
276 .manual_str =
"Print RTC datetime" 279 static int rtcdate(
int argc,
uchar *argv[])
282 char str[DATEMTIME_STR_LEN];
285 long long rtime, stime, dtime, dsec, dmsec;
288 unsigned int rpt_cnt = 0;
292 rpt_cnt =
dstou(argv[1]);
296 rt = read_rtc_time(&rtctime);
299 tprintf(
"RTC(UTC) : %s\n", str);
301 tprintf(
"Can not read RTC time(%d)\n", rt);
305 rtime = (((
long long)rstime.
sec) * 1000) + rstime.
usec / 1000;
306 DTPRINTF(0x01,
"RTC : %lld\n", rtime);
315 stime = (((
long long)systime.
sec) * 1000) + (systime.
usec / 1000);
316 DTPRINTF(0x01,
"SYS : %lld\n", stime);
318 dtime = stime - rtime;
321 dsec = (-dtime)/1000;
322 dmsec = (-dtime) % 1000;
326 dmsec = dtime % 1000;
330 tprintf(
"%12d.%03d (sec)\n", (
int)dsec, (
int)dmsec);
332 if(flg_repeat != 0) {
333 if(
cwait(rpt_cnt) != 0) {
350 static int datesync(
int argc,
uchar *argv[])
355 sync_systime_from_rtc();
356 read_rtc_time(&time);
358 tprintf(
"Set systime from RTC(UTC) : %s\n", str);
369 .manual_str =
"System datetime sync from RTC" 376 static int rtcsync(
int argc,
uchar *argv[])
385 sync_rtc_from_systime();
388 tprintf(
"Set RTC from systime : %s\n", str);
399 .manual_str =
"RTC sync from system datetime" 401 #endif // GSC_DEV_ENABLE_RTC 406 static void disp_key(
unsigned short key)
409 case KEY_HOME:
tprintf(
"KEY_HOME");
break;
410 case KEY_ESC:
tprintf(
"KEY_ESC");
break;
411 case KEY_ENTER:
tprintf(
"KEY_ENTER");
break;
413 case KEY_UP:
tprintf(
"KEY_UP");
break;
414 case KEY_DOWN:
tprintf(
"KEY_DOWN");
break;
415 case KEY_LEFT:
tprintf(
"KEY_LEFT");
break;
416 case KEY_RIGHT:
tprintf(
"KEY_RIGHT");
break;
418 case KEY_COMMA:
tprintf(
"KEY_COMMA");
break;
419 case KEY_PERIOD:
tprintf(
"KEY_PERIOD");
break;
420 case KEY_POWER:
tprintf(
"KEY_POWER");
break;
421 case KEY_PGUP:
tprintf(
"KEY_PGUP");
break;
422 case KEY_PGDN:
tprintf(
"KEY_PGDN");
break;
424 case KEY_F1:
tprintf(
"KEY_F1");
break;
425 case KEY_F2:
tprintf(
"KEY_F2");
break;
426 case KEY_F3:
tprintf(
"KEY_F3");
break;
427 case KEY_F4:
tprintf(
"KEY_F4");
break;
428 case KEY_F5:
tprintf(
"KEY_F5");
break;
429 case KEY_F6:
tprintf(
"KEY_F6");
break;
431 case KEY_R:
tprintf(
"KEY_R");
break;
432 case KEY_S:
tprintf(
"KEY_S");
break;
433 case KEY_P:
tprintf(
"KEY_P");
break;
434 case KEY_F:
tprintf(
"KEY_F");
break;
441 case KEY_0:
tprintf(
"KEY_0");
break;
442 case KEY_1:
tprintf(
"KEY_1");
break;
443 case KEY_2:
tprintf(
"KEY_2");
break;
444 case KEY_3:
tprintf(
"KEY_3");
break;
445 case KEY_4:
tprintf(
"KEY_4");
break;
446 case KEY_5:
tprintf(
"KEY_5");
break;
447 case KEY_6:
tprintf(
"KEY_6");
break;
448 case KEY_7:
tprintf(
"KEY_7");
break;
449 case KEY_8:
tprintf(
"KEY_8");
break;
450 case KEY_9:
tprintf(
"KEY_9");
break;
451 case KEY_F10:
tprintf(
"KEY_F10");
break;
452 case KEY_F11:
tprintf(
"KEY_F11");
break;
453 case KEY_F12:
tprintf(
"KEY_F12");
break;
454 case KEY_KPSLASH:
tprintf(
"KEY_KPSLASH");
break;
455 case KEY_KPASTERISC:
tprintf(
"KEY_KPASTERISC");
break;
456 case KEY_KPHYPHEN:
tprintf(
"KEY_KPHYPHEN");
break;
457 case KEY_KPPLUS:
tprintf(
"KEY_KPPLUS");
break;
458 case KEY_BACKSPACES:
tprintf(
"KEY_BACKSPACES");
break;
459 case KEY_SPACE:
tprintf(
"KEY_SPACE");
break;
460 case KEY_LSHIFT:
tprintf(
"KEY_LSHIFT");
break;
461 case KEY_KPPERIOD:
tprintf(
"KEY_KPPERIOD");
break;
462 case KEY_LEFTCTRL:
tprintf(
"KEY_LEFTCTRL");
break;
464 case KEY_GB_UP:
tprintf(
"KEY_GB_UP");
break;
465 case KEY_GB_DOWN:
tprintf(
"KEY_GB_DOWN");
break;
466 case KEY_GB_LEFT:
tprintf(
"KEY_GB_LEFT");
break;
467 case KEY_GB_RIGHT:
tprintf(
"KEY_GB_RIGHT");
break;
468 case KEY_GB_ESC:
tprintf(
"KEY_GB_ECS");
break;
469 case KEY_GB_ENTER:
tprintf(
"KEY_GB_ENTER");
break;
470 case KEY_GB_VOLUP:
tprintf(
"KEY_GB_VOLUP");
break;
471 case KEY_GB_VOLDOWN:
tprintf(
"KEY_GB_VOLDOWN");
break;
483 switch(event->
what) {
486 disp_key(event->
arg);
491 disp_key(event->
arg);
496 disp_key(event->
arg);
500 tprintf(
"EVT_TOUCHSTART : X=%4d Y=%4d",
505 tprintf(
"EVT_TOUCHMOVE : X=%4d Y=%4d",
510 tprintf(
"EVT_TOUCHEND : X=%4d Y=%4d",
519 tprintf(
"Unknown Event(%d) %3d : ",
526 static int dispevent(
int argc,
uchar *argv[])
533 display_event(&event);
535 if(event.
arg == KEY_GB_ENTER) {
558 .command = dispevent,
559 .manual_str =
"Print sysevent" 562 static int setevent(
int argc,
uchar *argv[])
567 tprintf(
"push any key(k:UP, j:DOWN, h:LEFT, l:RIGHT, [SPC]:SPACE, [ENT]:ENTER, [ESC]:exit\n");
578 event.arg = KEY_GB_UP;
586 event.arg = KEY_GB_DOWN;
594 event.arg = KEY_GB_LEFT;
602 event.arg = KEY_GB_RIGHT;
611 event.arg = KEY_GB_ENTER;
620 event.arg = KEY_GB_SPACE;
660 .manual_str =
"Set sysevent from key input" 663 static int cmd_sleep(
int argc,
uchar *argv[])
686 .command = cmd_sleep,
687 .usage_str =
"<sleep_time(ms)>",
688 .manual_str =
"Sleep shell task" 691 extern struct st_tcb *run_task;
693 static int console(
int argc,
uchar *argv[])
719 static int console_set(
int argc,
uchar *argv[])
726 tprintf(
"Cannot open device \"%s\".\n", argv[1]);
735 tprintf(
"Cannot set device %s\n", argv[0]);
746 tprintf(
"Cannot set device %s\n", argv[0]);
762 .command = console_set,
763 .usage_str =
"[device_name]",
764 .manual_str =
"Set console in device" 769 .command = console_set,
770 .usage_str =
"[device_name]",
771 .manual_str =
"Set console out device" 776 .command = console_set,
777 .usage_str =
"[device_name]",
778 .manual_str =
"Set console error device" 783 &com_sys_console_out,
784 &com_sys_console_err,
794 .usage_str =
"[in|out|err] [device_name]",
795 .manual_str =
"Set console device",
796 .sublist = com_sys_console_sub
799 #ifndef GSC_TARGET_SYSTEM_EMU 800 static int sysmem(
int argc,
uchar *argv[])
802 extern long *BSS_START;
803 extern long *BSS_END;
804 extern long *DATAROM_START;
805 extern long *DATARAM_START;
806 extern long *DATARAM_END;
808 tprintf(
"DATAROM_START : %08lX\n", (
unsigned long)DATAROM_START);
809 tprintf(
"DATARAM_START : %08lX\n", (
unsigned long)DATARAM_START);
810 tprintf(
"DATARAM_END : %08lX\n", (
unsigned long)DATARAM_END);
811 tprintf(
"BSS_START : %08lX\n", (
unsigned long)BSS_START);
812 tprintf(
"BSS_END : %08lX\n", (
unsigned long)BSS_END);
823 .manual_str =
"Print system memory status" 825 #endif // GSC_TARGET_SYSTEM_EMU 827 #ifdef GSC_MEMORY_ENABLE_HEAP_MEMORY 828 static int disp_heap(
int argc,
uchar *argv[])
833 unsigned long use = total - free;
851 tprintf(
"Total : %4ld M byte\n", total/1024/1024);
852 tprintf(
"Use : %4ld M byte\n", use/1024/1024);
853 tprintf(
"Free : %4ld M byte\n", free/1024/1024);
857 tprintf(
"Total : %7ld K byte\n", total/1024);
858 tprintf(
"Use : %7ld K byte\n", use/1024);
859 tprintf(
"Free : %7ld K byte\n", free/1024);
864 tprintf(
"Total : %10ld byte\n", total);
865 tprintf(
"Use : %10ld byte\n", use);
866 tprintf(
"Free : %10ld byte\n", free);
878 .command = disp_heap,
879 .usage_str =
"[k|m]",
880 .manual_str =
"Print heap memory status" 884 static int mem_alloc(
int argc,
uchar *argv[]);
888 .command = mem_alloc,
889 .usage_str =
"<size>",
890 .manual_str =
"Memory alloc" 893 static int mem_alloc(
int argc,
uchar *argv[])
899 print_command_usage(&com_mem_alloc);
903 size =
dstou(argv[1]);
905 tprintf(
"Memory Size = %d\n", size);
906 tprintf(
"Memory pointer = 0x%p\n", p);
912 static int mem_free(
int argc,
uchar *argv[]);
917 .usage_str =
"<address>",
918 .manual_str =
"Free memory" 921 static int mem_free(
int argc,
uchar *argv[])
926 print_command_usage(&com_mem_free);
930 p = (
unsigned char *)(
long)
hstoi(argv[1]);
932 tprintf(
"Free pointer = 0x%08lX\n", (
unsigned long)p);
938 #endif // GSC_MEMORY_ENABLE_HEAP_MEMORY 940 static int reboot(
int argc,
uchar *argv[])
953 .manual_str =
"Reboot system" 956 #ifdef GSC_LIB_ENABLE_RANDOM 959 static int random(
int argc,
uchar *argv[])
961 unsigned int r = (
unsigned int)genrand_int32();
976 .manual_str =
"Generate random value" 980 #ifndef GSC_TARGET_SYSTEM_EMU 981 #ifdef GSC_KERNEL_ENABLE_INTERRUPT_COUNT 984 static int interrupt(
int argc,
uchar *argv[])
989 for(i=0; i<MAXVECT; i++) {
990 count = get_interrupt_count(i);
992 tprintf(
"%-3d : %d\n", i, count);
1005 .
name =
"interrupt",
1006 .command = interrupt,
1007 .manual_str =
"Print interrupt count" 1017 static void print_command_manual(
const struct st_shell_command *cp,
int indent)
1031 static void print_command_list(
const struct st_shell_command **cl,
int indent)
1036 if((*cp)->name[0] != 0) {
1037 DTPRINTF(0x02,
"Disp %s\n",(*cp)->name);
1038 print_command_manual(*cp, indent);
1044 static void print_command_list_manual(
const struct st_shell_command **cl,
int indent)
1048 if((*cp)->name[0] != 0) {
1049 DTPRINTF(0x02,
"Disp %s\n",(*cp)->name);
1050 print_command_manual(*cp, indent);
1053 if((*cp)->sublist != 0) {
1056 print_command_list(cp, indent);
1060 static int help(
int argc,
uchar *argv[])
1067 DTPRINTF(0x01,
"help only\n");
1068 print_command_list(cp, 0);
1072 DTPRINTF(0x01,
"? %s == %s\n", argv[arg], (*cp)->name);
1073 if(
strcomp((
unsigned char *)(*cp)->name, (
unsigned char *)argv[arg]) == 0) {
1074 tprintf(
" -> %s", (*cp)->name);
1075 if((*cp)->sublist == 0) {
1077 print_command_manual(*cp, arg);
1078 if((*cp)->usage_str != 0) {
1079 print_command_usage(*cp);
1083 if(arg < (argc - 1)) {
1085 DTPRINTF(0x01,
"Next arg %s\n", argv[arg]);
1089 print_command_list_manual(cp, arg);
1098 for(i=1; i<argc; i++) {
1101 tprintf(
" : command not found\n");
1110 .usage_str =
"[command]",
1111 .manual_str =
"Print command help message" 1138 #ifdef GSC_DEV_ENABLE_RTC 1147 #ifndef GSC_TARGET_SYSTEM_EMU 1150 #ifdef GSC_MEMORY_ENABLE_HEAP_MEMORY 1158 #ifdef GSC_LIB_ENABLE_RANDOM 1161 #ifndef GSC_TARGET_SYSTEM_EMU 1162 #ifdef GSC_KERNEL_ENABLE_INTERRUPT_COUNT 1171 .usage_str =
"<command>",
1172 .manual_str =
"System operation commands",
1173 .sublist = com_sys_list
unsigned char uchar
GadgetSeedの文字(列)は unsigned char 型となる
static const struct st_shell_command com_sys_systime
システムタイマ値を表示
static const struct st_shell_command com_sys_sleep
task_sleep() でshellタスクを指定時間スリープする
#define EVT_KEYDOWN
キーを押した
void task_sleep(unsigned int stime)
タスクを指定時間タイマ待ち状態にする
#define EVT_TOUCHEND
(画面に)タッチした状態から離した
static const struct st_shell_command com_sys_info
システム情報を表示
void set_console_out_device(struct st_device *dev)
実行タスクの標準出力デバイスを設定する
void free_memory(void *ptr)
確保したメモリを開放する
static const struct st_shell_command com_sys_sysmem
システムメモリ状態を表示する
static const struct st_shell_command com_sys_reboot
システムを再起動する
#define EVT_POWEROFF
電源Off
unsigned long long when
イベントが発生したカーネル時間
struct st_device * open_device(char *name)
デバイスをオープンする
int cgetcnw(unsigned char *rd)
標準入力より1文字を取得する(待ち無し)
char date_to_dayofweek(short year, char month, char day)
西暦年、月、日より曜日を求める
void datemtime_to_str(char *str, struct st_datetime *datetime)
時間を日付ミリ秒時間文字列に変換する
int set_event(struct st_sysevent *event)
システムイベントを登録する
unsigned int dstou(uchar *str)
10進数文字列 unsigned int 変換
unsigned long long get_system_utime(void)
システム時間を取得する
struct st_device * stdin_dev
タスク標準入力デバイス
#define GSC_TIMEZONE_STR
$gsc タイムゾーンを示す文字列
struct st_device * stdout_dev
タスク標準出力デバイス
unsigned short what
イベント種類
static const struct st_shell_command com_sys_datetime
日付時刻を表示
void get_systime(struct st_systime *systime)
システム時間を取得する
int strcomp(const uchar *s1, const uchar *s2)
文字列比較
int dstoi(uchar *str)
10進数文字列 int 変換
void * alloc_memory(unsigned int size)
メモリを確保する
unsigned long heap_total_size(void)
全てのメモリのバイト数を取得する
void unixtime_to_datetime(struct st_datetime *datetime, struct st_systime *unixtime)
UNIX時間より時刻を求める
void set_error_out_device(struct st_device *dev)
実行タスクのエラー出力デバイスを設定する
static const struct st_shell_command com_sys_kerneltime
カーネルタイマ値を表示
static const struct st_shell_command com_sys_console
shellタスクのコンソールデバイスを表示、設定する
void systime_to_datetime(struct st_datetime *datetime, struct st_systime *stime)
システム時間よりローカル時刻を求める
unsigned short pos_x
イベント発生X座標
#define EVT_KEYDOWN_REPEAT
キーを押した(リピート)
int tprintf(const char *fmt,...)
簡易printf
#define EVT_TOUCHSTART
(画面に)タッチした
unsigned long heap_free_size(void)
未確保のメモリの合計バイト数を取得する
static const struct st_shell_command com_sys_event
発生したイベントを表示する
#define EVT_TOUCHMOVE
(画面に)タッチしたまま動かした
static const struct st_shell_command com_sys_setevent
イベントを発生する
int get_event(struct st_sysevent *event, unsigned int timeout)
システムイベントを待つ
char dayofweek
曜日 0:日曜日〜6:土曜日
void set_systime(struct st_systime *systime)
UTC時刻からシステム時間を設定する
t_time datetime_to_utc(struct st_datetime *datetime)
ローカル西暦年月日、時間よりUTCを求める
const struct st_shell_command *const * sublist
サブコマンド配列
struct st_device * error_dev
タスクエラー出力デバイス
int hstoi(uchar *str)
16進数文字列 int 変換
unsigned long long get_kernel_time(void)
カーネル時間を取得する
unsigned short pos_y
イベント発生Y座標
static const struct st_shell_command com_sys_heap
ヒープメモリの状態を表示する
static const struct st_shell_command com_sys_timercheck
カーネルタイマとシステムタイマの差分を表示し続ける
void set_console_in_device(struct st_device *dev)
実行タスクの標準入力デバイスを設定する
int cwait(unsigned int timeout)
標準入力より入力を待つ
char name[MAX_DEVNAMELRN]
デバイス名文字列
void datetime_to_systime(struct st_systime *systime, struct st_datetime *time)
ローカル西暦年月日、時間よりシステム時間を求める
static const struct st_shell_command com_sys_setdate
日付時刻を設定
char * manual_str
マニュアル文字列