EE445M RTOS
Taken at the University of Texas Spring 2015
pingpp.hpp
Go to the documentation of this file.
1 /* -*- mode: c++; c-basic-offset: 4; */
2 /* Created by Eric Crosson on 2015-04-26 */
3 #ifndef __pingpp__
4 #define __pingpp__
5 
6 #include "circularbuffer.hpp"
7 #include "interruptable.hpp"
8 #include "semaphorepp.hpp"
9 #include "criticalpp.hpp"
10 #include "blinker.hpp"
11 #include "timerpp.hpp"
12 
13 #include <stdbool.h>
14 #include <stdint.h>
15 
16 #define PING_BUFFER_LENGTH 5
17 #define PING_BUFFER_TYPE int32_t
18 
19 typedef uint32_t memory_address_t;
20 
21 typedef enum ping_status {
27 
28 class ping : public critical {
29 private:
34  uint32_t timer_interrupt;
37 
40 
41 public:
42  ping();
43  ping(memory_address_t port_base, memory_address_t port_pin,
44  timer_t timer_id, subtimer_t timer_subtimer);
45  void sample(void);
46 
48  virtual void start(void);
49 
51  virtual void stop(void);
52 
54  uint32_t handle_gpio(void);
55  uint32_t handle_timer(void);
56 
58  semaphore* get_sem(void);
59 
61  uint32_t notify(void);
62 
63  int32_t average(void);
64  int32_t distance(void);
65 
67 };
68 
69 #endif /* __PING__ */
70 
71 /* Local Variables: */
72 /* firestarter: (compile "make -k -j32 -C ~/workspace/ee445m-labs/build/") */
73 /* End: */
semaphore * get_sem(void)
Definition: pingpp.cpp:130
uint32_t memory_address_t
Definition: adcpp.hpp:16
circularbuffer< int32_t, 5 > buf
Definition: pingpp.hpp:66
uint8_t timer_t
Definition: timerpp.hpp:20
uint32_t timer_interrupt
Definition: pingpp.hpp:34
memory_address_t pin
Definition: pingpp.hpp:36
enum ping_status ping_status_t
uint32_t timer_signal_value
Definition: pingpp.hpp:38
uint32_t notify(void)
ping()
Definition: pingpp.cpp:11
virtual void stop(void)
Definition: pingpp.cpp:80
int32_t average(void)
Definition: pingpp.cpp:135
uint32_t memory_address_t
Definition: pingpp.hpp:19
void sample(void)
Definition: pingpp.cpp:45
semaphore sem
Definition: pingpp.hpp:30
timer tim
Definition: pingpp.hpp:33
uint32_t timer_response_value
Definition: pingpp.hpp:39
ping_status
Definition: pingpp.hpp:21
uint32_t subtimer_t
Definition: timerpp.hpp:21
int32_t distance(void)
Definition: pingpp.cpp:146
uint32_t handle_timer(void)
Definition: pingpp.cpp:85
Definition: pingpp.hpp:28
memory_address_t base
Definition: pingpp.hpp:35
virtual void start(void)
Definition: pingpp.cpp:74
ping_status_t status
Definition: pingpp.hpp:32
blinker sig
Definition: pingpp.hpp:31
uint32_t handle_gpio(void)
Definition: pingpp.cpp:107