APM:Libraries
Util.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <AP_Common/AP_Common.h>
4 #include <AP_HAL/AP_HAL.h>
5 
6 #include "Heat.h"
7 #include "Perf.h"
8 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO
9 #include "ToneAlarm_Disco.h"
10 #endif
11 #include "ToneAlarm.h"
12 #include "Semaphores.h"
13 
14 namespace Linux {
15 
16 enum hw_type {
23 };
24 
25 class Util : public AP_HAL::Util {
26 public:
27  static Util *from(AP_HAL::Util *util) {
28  return static_cast<Util*>(util);
29  }
30 
31  void init(int argc, char *const *argv);
32  bool run_debug_shell(AP_HAL::BetterStream *stream) { return false; }
33 
37  void commandline_arguments(uint8_t &argc, char * const *&argv);
38 
39  bool toneAlarm_init();
40  void toneAlarm_set_tune(uint8_t tune);
41 
42  void _toneAlarm_timer_tick();
43 
44  /*
45  set system clock in UTC microseconds
46  */
47  void set_system_clock(uint64_t time_utc_usec);
48  const char *get_custom_log_directory() const override final { return custom_log_directory; }
49  const char *get_custom_terrain_directory() const override final { return custom_terrain_directory; }
50  const char *get_custom_storage_directory() const override final { return custom_storage_directory; }
51 
52  void set_custom_log_directory(const char *_custom_log_directory) { custom_log_directory = _custom_log_directory; }
53  void set_custom_terrain_directory(const char *_custom_terrain_directory) { custom_terrain_directory = _custom_terrain_directory; }
54  void set_custom_storage_directory(const char *_custom_storage_directory) {
55  custom_storage_directory = _custom_storage_directory;
56  }
57 
58  bool is_chardev_node(const char *path);
59  void set_imu_temp(float current) override;
60  void set_imu_target_temp(int8_t *target) override;
61 
62  uint32_t available_memory(void) override;
63 
64  /*
65  * Write a string as specified by @fmt to the file in @path. Note this
66  * should not be used on hot path since it will open, write and close the
67  * file for each call.
68  */
69  int write_file(const char *path, const char *fmt, ...) FMT_PRINTF(3, 4);
70 
71  /*
72  * Read a string as specified by @fmt from the file in @path. Note this
73  * should not be used on hot path since it will open, read and close the
74  * file for each call.
75  */
76  int read_file(const char *path, const char *fmt, ...) FMT_SCANF(3, 4);
77 
78  perf_counter_t perf_alloc(enum perf_counter_type t, const char *name) override
79  {
80  return Perf::get_instance()->add(t, name);
81  }
82 
83  void perf_begin(perf_counter_t perf) override
84  {
85  return Perf::get_instance()->begin(perf);
86  }
87 
88  void perf_end(perf_counter_t perf) override
89  {
90  return Perf::get_instance()->end(perf);
91  }
92 
93  void perf_count(perf_counter_t perf) override
94  {
95  return Perf::get_instance()->count(perf);
96  }
97 
98  // create a new semaphore
99  AP_HAL::Semaphore *new_semaphore(void) override { return new Semaphore; }
100 
101  int get_hw_arm32();
102 
103 private:
104 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO
106 #else
107  static ToneAlarm _toneAlarm;
108 #endif
111  char *const *saved_argv;
112  const char *custom_log_directory = nullptr;
113  const char *custom_terrain_directory = nullptr;
114  const char *custom_storage_directory = nullptr;
115  static const char *_hw_names[UTIL_NUM_HARDWARES];
116 };
117 
118 }
void end(perf_counter_t pc)
Definition: Perf.cpp:140
void _toneAlarm_timer_tick()
Definition: Util.cpp:76
hw_type
Definition: Util.h:16
Heat * _heat
Definition: Util.h:110
static const char * _hw_names[UTIL_NUM_HARDWARES]
Definition: Util.h:115
void begin(perf_counter_t pc)
Definition: Perf.cpp:111
void set_imu_temp(float current) override
Definition: Util.cpp:46
int int read_file(const char *path, const char *fmt,...) FMT_SCANF(3
Definition: Util.cpp:151
const char * custom_storage_directory
Definition: Util.h:114
const char * name
Definition: BusTest.cpp:11
void perf_end(perf_counter_t perf) override
Definition: Util.h:88
char *const * saved_argv
Definition: Util.h:111
#define FMT_PRINTF(a, b)
Definition: AP_Common.h:39
const char * get_custom_storage_directory() const override final
Definition: Util.h:50
static Util * from(AP_HAL::Util *util)
Definition: Util.h:27
void set_custom_storage_directory(const char *_custom_storage_directory)
Definition: Util.h:54
void * perf_counter_t
Definition: Util.h:101
const char * get_custom_terrain_directory() const override final
Definition: Util.h:49
static ToneAlarm_Disco _toneAlarm
Definition: Util.h:105
#define FMT_SCANF(a, b)
Definition: AP_Common.h:40
perf_counter_type
Definition: Util.h:96
const char * fmt
Definition: Printf.cpp:14
const char * custom_log_directory
Definition: Util.h:112
void init(int argc, char *const *argv)
Definition: Util.cpp:27
int saved_argc
Definition: Util.h:109
perf_counter_t add(perf_counter_type type, const char *name)
Definition: Perf.cpp:211
void commandline_arguments(uint8_t &argc, char *const *&argv)
Definition: Util.cpp:60
void toneAlarm_set_tune(uint8_t tune)
Definition: Util.cpp:71
AP_HAL::Semaphore * new_semaphore(void) override
Definition: Util.h:99
Common definitions and utility routines for the ArduPilot libraries.
uint32_t available_memory(void) override
Definition: Util.cpp:121
void perf_count(perf_counter_t perf) override
Definition: Util.h:93
void count(perf_counter_t pc)
Definition: Perf.cpp:189
int write_file(const char *path, const char *fmt,...) FMT_PRINTF(3
Definition: Util.cpp:126
void set_imu_target_temp(int8_t *target) override
Definition: Util.cpp:52
static Perf * get_instance()
Definition: Perf.cpp:47
const char * custom_terrain_directory
Definition: Util.h:113
const char * get_custom_log_directory() const override final
Definition: Util.h:48
void set_custom_log_directory(const char *_custom_log_directory)
Definition: Util.h:52
void set_custom_terrain_directory(const char *_custom_terrain_directory)
Definition: Util.h:53
void set_system_clock(uint64_t time_utc_usec)
Definition: Util.cpp:94
bool toneAlarm_init()
Definition: Util.cpp:66
int int perf_counter_t perf_alloc(enum perf_counter_type t, const char *name) override
Definition: Util.h:78
bool is_chardev_node(const char *path)
Definition: Util.cpp:104
int get_hw_arm32()
Definition: Util.cpp:185
bool run_debug_shell(AP_HAL::BetterStream *stream)
Definition: Util.h:32
void perf_begin(perf_counter_t perf) override
Definition: Util.h:83