-
Notifications
You must be signed in to change notification settings - Fork 0
/
peripherals.h
126 lines (101 loc) · 2.32 KB
/
peripherals.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/**
* @file peripherals.h
* @brief Constructs and definitions related to peripherals.
*/
#ifndef PERI_H
#define PERI_H
#include "common.h"
#include "hm.h"
#define TRUE 1
#define FALSE 0
/// Captures GPS reading
struct GPS_reading{// x y z vx vy vz lat lon alt have been changed from int 32 to uint 32 for purpose of oils
///* Position data bytes: Long(4) Unit(mm) ECEF Frame
int32_t x;
int32_t y;
int32_t z;
///* Velocity data bytes: Long(4) Unit(mm/s) ECEF Frame
int32_t v_x;
int32_t v_y;
int32_t v_z;
///* Latitude Longitude Altitude
int32_t lat;
int32_t lon;
int32_t alt;
///* Time data HH:MM:SS DD/MM/YYYY
uint8_t hours;
uint8_t minutes;
uint8_t seconds;
uint8_t date;
uint8_t month;
uint16_t year;
uint16_t pdop;
///* Stores the time since last GPS reading
uint16_t time_since_reading;
};
/// Captures Sun sensor readings
struct SS_reading{
uint16_t reading[6];
float read[6];
};
///Captures Magnetometer Readings
struct MM_reading{
float B_x;
float B_y;
float B_z;
};
/** @brief Power up a peripheral
*/
void power_up_peripheral(uint8_t device);
/** @brief Power down a peripheral
*/
void power_down_peripheral(uint8_t device);
/**
* @brief Start getting the GPS readings
*/
void read_GPS(void);
/**
* @brief Read the sunsensor readings from the ADC IC
*/
void read_SS(void);
/**
* @brief Reads magnetometer through UART
*/
void read_MM (void);
///The PWM values of the Torquer along with current direction
struct PWM_values{
uint16_t x;
uint16_t y;
uint16_t z;
uint8_t x_dir;
uint8_t y_dir;
uint8_t z_dir;
};
///Captures the state of the system
struct state{
struct GPS_reading gps;
struct SS_reading ss;
struct MM_reading mm;
struct HM_data hm;
struct PWM_values pwm;
};
/**
* @brief Initialize PWM and the current direction pins
*/
void configure_torquer(void);
/**
* @brief Set PWM values of the torquer as calculated in the control law
*/
void set_PWM(void);
/**
* @brief Reset PWM values of the torquer to 0
*/
void reset_PWM(void);
///The variable that defines the current state of the satellite
extern volatile struct state Current_state;
///Variable for storing the current time sincec equinox in seconds
extern uint64_t Time;
///Stores the Mode the Satellite is in
extern uint8_t Mode;
extern volatile uint8_t GPS_done;
#endif