This repository has been archived by the owner on Feb 28, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsensors.h
executable file
·112 lines (76 loc) · 2.6 KB
/
sensors.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
* sensors.h
*
* Created on: Jul 13, 2012
* Author: nabercro
*/
#ifndef SENSORS_H_
#define SENSORS_H_
#include "events.h"
#include <msp430.h>
#include "time.h"
#include "auxlib.h"
struct sensor;
#define sensor_ref struct sensor *
// These are needed by each sensor to know which ADC it is
// See init sensors
#define CURRENT_ADC 0
#define VOLTAGE_ADC 1
#define TEMPERATURE_ADC 2
#define PORT_A_ADC 3
#define PORT_B_ADC 4
//TODO Move this to sensors.c
// Sensor struct to hold generic sensor data
struct sensor{
uint8_t type;
uint8_t adc_channel;
time_ref trigger_time;
time_ref period;
uint8_t enabled;
uint16_t size;
uint16_t count;
uint8_t data_ready;
time_ref end_time;
int16_t * write_array;
int16_t * data_array;
int16_t * old_array;
action_ref on_full;
uint8_t (*delete_this)();
uint8_t (*enable_this)();
uint8_t (*disable_this)();
};
uint8_t init_adc();
uint8_t sample_enabled_sensors();
uint8_t handle_adc_interrupt();
uint8_t handle_full_sensors();
void start_sampling();
void stop_sampling();
uint8_t ready_to_sample();
sensor_ref new_sensor(uint8_t type, uint8_t channel, time_ref period, uint16_t data_array_size);
sensor_ref new_one_time_sensor(uint8_t type, uint8_t channel, time_ref period, uint16_t data_array_size);
uint8_t sensor_delete(sensor_ref * sensor_ptr_ptr);
uint8_t sensor_delete_list(sensor_ref * sensor_ptr_ptr);
uint8_t store_data_point(sensor_ref s, uint16_t measurement);
uint8_t sensor_add_action_on_data_full(sensor_ref s, action_ref a);
int16_t * sensor_get_data_array(sensor_ref s);
int16_t * sensor_get_old_array(sensor_ref s);
uint8_t enable_sensor_args(node_ref sensors);
uint8_t disable_sensor_args(node_ref sensors);
uint8_t enable_sensor(sensor_ref sensor);
uint8_t disable_sensor(sensor_ref sensor);
uint8_t sensor_clear_state(sensor_ref s);
uint8_t sensor_get_type(sensor_ref s);
uint16_t sensor_get_size(sensor_ref s);
time_ref sensor_get_period(sensor_ref s);
time_ref sensor_get_end_time(sensor_ref s);
time_ref sensor_get_trigger_time(sensor_ref s);
uint8_t sensor_get_loc(sensor_ref s);
uint8_t sensor_set_delete_func(sensor_ref s, uint8_t (*delete_func)());
uint8_t sensor_set_disable_func(sensor_ref s, uint8_t (*disable_func)());
uint8_t sensor_set_enable_func(sensor_ref s, uint8_t (*enable_func)());
uint8_t sensor_disable_this(sensor_ref s);
uint8_t sensor_enable_this(sensor_ref s);
uint8_t sensor_delete_this(sensor_ref s);
uint8_t loc_to_channel(uint8_t loc);
uint8_t channel_to_loc(uint8_t channel);
#endif /* SENSORS_H_ */