Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
shell_arch.c
Go to the documentation of this file.
1/*
2 * Copyright (C) Alexandre Bustico <alexandre.bustico@enac.fr>
3 *
4 * This file is part of paparazzi
5 *
6 * paparazzi is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * paparazzi is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with paparazzi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 */
20
26#include "modules/core/shell.h"
28#include "mcu_periph/uart.h"
29#include "printf.h"
30#include "modules/core/abi.h"
32
33/*************************
34 * Basic static commands *
35 *************************/
36
37static void cmd_mem(BaseSequentialStream *lchp, int argc, const char *const argv[])
38{
39 size_t n, total, largest;
41
42 (void)argv;
43 if (argc > 0) {
44 chprintf(lchp, "Usage: mem\r\n");
45 return;
46 }
49 chprintf(lchp, "core free memory : %u bytes\r\n", area.size);
50 chprintf(lchp, "heap fragments : %u\r\n", n);
51 chprintf(lchp, "heap free total : %u bytes\r\n", total);
52 chprintf(lchp, "heap free largest: %u bytes\r\n", largest);
53}
54
55static void cmd_abi(BaseSequentialStream *lchp, int argc, const char *const argv[])
56{
57 (void)argv;
58 if (argc > 0) {
59 chprintf(lchp, "Usage: abi\r\n");
60 return;
61 }
62
63 chprintf(lchp, "ABI message bindings\r\n");
64 for (int i = 0; i < ABI_MESSAGE_NB; i++) {
65 chprintf(lchp, " msg %d: ", i);
66 if (abi_queues[i] == NULL) {
67 chprintf(lchp, "no bindings\r\n");
68 } else {
69 abi_event *e;
70 ABI_FOREACH(abi_queues[i], e) {
71 chprintf(lchp, "(cb 0x%lx, id %d), ", e->cb, e->id);
72 }
73 chprintf(lchp, "\r\n");
74 }
75 }
76}
77
78static const ShellCommand commands[] = {
79 {"mem", cmd_mem},
80 {"abi", cmd_abi},
81 {NULL, NULL}
82};
83
85 NULL,
87};
88
96
97
101{
102 // This should be called after mcu periph init
104
105 shellInit();
107 if (shelltp == NULL) {
108 chSysHalt("fail starting shell");
109 }
110}
111
Main include for ABI (AirBorneInterface).
abi_callback cb
Definition abi_common.h:69
uint8_t id
Definition abi_common.h:68
#define ABI_FOREACH(head, el)
Macros for linked list.
Definition abi_common.h:75
Event structure to store callbacks in a linked list.
Definition abi_common.h:67
BaseSequentialStream * sc_channel
I/O channel associated to the shell.
void shellInit(void)
Shell manager initialization.
Custom command entry type.
Shell descriptor type.
void chprintf(BaseSequentialStream *lchp, const char *fmt,...)
Definition printf.c:395
uint16_t foo
Definition main_demo5.c:58
Simple CLI shell header.
Mini printf-like functionality.
void() shell_cmd_t(shell_stream_t *stream, int argc, const char *const argv[])
Command handler.
Definition shell.h:37
void shell_init_arch(void)
Arch init.
Definition shell_arch.c:100
static void cmd_mem(BaseSequentialStream *lchp, int argc, const char *const argv[])
Definition shell_arch.c:37
static const ShellCommand commands[]
Definition shell_arch.c:78
static ShellConfig shell_cfg
Definition shell_arch.c:84
void shell_add_entry(char *cmd_name, shell_cmd_t *cmd)
Add dynamic entry.
Definition shell_arch.c:92
static void cmd_abi(BaseSequentialStream *lchp, int argc, const char *const argv[])
Definition shell_arch.c:55
arch independent UART (Universal Asynchronous Receiver/Transmitter) API
arch independent USB API