My Project
CanSatNeXT.cpp
Go to the documentation of this file.
1 // Copyright (c) 2023 Samuli Nyman
2 // SPDX-License-Identifier: MIT
3 
4 #include "CanSatNeXT.h"
5 #include "Wire.h"
6 #include "soc/soc.h"
7 #include "soc/rtc_cntl_reg.h"
8 
9 
10 
11 uint8_t CanSatInit(uint8_t maccAddressLastByte){
12  uint8_t address[6];
13  createMacAddress(maccAddressLastByte, address);
14  return CanSatInit(address);
15 }
16 
17 uint8_t CanSatInit(uint8_t *macAddress) {
18  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //This disables input voltage checks - enabling the satellite to use batteries until they are empty
19 
20  Wire.begin(I2C_SDA, I2C_SCL);
21 
22  Serial.println("Init CanSatNeXT!");
23  pinMode(LED, OUTPUT);
24  pinMode(MEAS_EN, OUTPUT);
25  pinMode(SD_DET, INPUT);
26  digitalWrite(LED, HIGH);
27  digitalWrite(MEAS_EN, HIGH);
28  uint8_t errors = 0;
29  if(initIMU())
30  {
31  Serial.println("Failed to initialize the IMU");
32  errors = ERROR_IMU;
33  }
34  if(initBaro(&Wire))
35  {
36  Serial.println("Failed to initialize the barometer");
37  errors = ERROR_BARO;
38  }
39  bool sd_present = SDCardPresent();
40  if(!sd_present)
41  {
42  Serial.println("No SD-card present! Can't initialize the memory");
43  errors = ERROR_NO_SD_CARD;
44  }else if(initSDCard()){
45  Serial.println("Failed to initialize the SD-card");
46  errors = ERROR_MEMORY;
47  }
48 
49  // As a safety feature, initialize radio only if macAddress is provided
50  if(macAddress != nullptr)
51  {
52  if(initializeESPNOW(macAddress))
53  {
54  Serial.println("Failed to initialize the radio system");
55  errors = ERROR_RADIO;
56  }
57  }
58 
59  return errors;
60 
61 }
62 
63 uint8_t GroundStationInit(uint8_t maccAddressLastByte){
64  uint8_t address[6];
65  createMacAddress(maccAddressLastByte, address);
66  return GroundStationInit(address);
67 }
68 
69 uint8_t GroundStationInit(uint8_t *macAddress) {
70  if(initializeESPNOW(macAddress))
71  {
72  Serial.println("Failed to initialize the radio system");
73  return ERROR_RADIO;
74  }
75 
76  return 0;
77 }
78 
79 
CanSatInit
uint8_t CanSatInit(uint8_t maccAddressLastByte)
Definition: CanSatNeXT.cpp:11
I2C_SCL
#define I2C_SCL
Definition: CanSatNeXTPins.h:21
SD_DET
#define SD_DET
Definition: CanSatNeXTPins.h:14
SDCardPresent
bool SDCardPresent()
Definition: memory.cpp:129
ERROR_IMU
#define ERROR_IMU
Definition: CanSatNeXT.h:15
initBaro
uint8_t initBaro(TwoWire *wire)
Definition: baro.cpp:11
ERROR_NO_SD_CARD
#define ERROR_NO_SD_CARD
Definition: CanSatNeXT.h:19
ERROR_BARO
#define ERROR_BARO
Definition: CanSatNeXT.h:16
CanSatNeXT.h
initSDCard
uint8_t initSDCard()
Definition: memory.cpp:11
ERROR_MEMORY
#define ERROR_MEMORY
Definition: CanSatNeXT.h:18
initializeESPNOW
uint8_t initializeESPNOW(uint8_t *macAddress)
Definition: radio.cpp:30
LED
#define LED
Definition: CanSatNeXTPins.h:11
createMacAddress
void createMacAddress(uint8_t lastByte, uint8_t mac[6])
Definition: radio.cpp:67
ERROR_RADIO
#define ERROR_RADIO
Definition: CanSatNeXT.h:17
GroundStationInit
uint8_t GroundStationInit(uint8_t maccAddressLastByte)
Definition: CanSatNeXT.cpp:63
MEAS_EN
#define MEAS_EN
Definition: CanSatNeXTPins.h:13
initIMU
uint8_t initIMU()
Definition: imu.cpp:10
I2C_SDA
#define I2C_SDA
Definition: CanSatNeXTPins.h:20