Skip to content

Commit e14e0cc

Browse files
committed
wip: working comms with io module heart beats
1 parent b3656a2 commit e14e0cc

2 files changed

Lines changed: 30 additions & 25 deletions

File tree

firmwares/fancyfins/src/can.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
use defmt::*;
22
use embassy_executor::Spawner;
3-
use embassy_stm32::can::bxcan::{filter, Fifo, Frame, Id, StandardId};
3+
use embassy_stm32::can::bxcan::{Fifo, Frame, Id, StandardId, filter};
44
use embassy_stm32::can::{Can, CanRx, CanTx};
55
use embassy_stm32::peripherals::CAN;
66
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
77

88
use embassy_sync::pubsub::{PubSubChannel, Publisher, Subscriber};
9-
use shared_types::{CanBusMessage, CanBusMessageId, FlightMode, TelemetryToPayloadMessage};
9+
use shared_types::FlightMode;
10+
//use shared_types::{CanBusMessage, CanBusMessageId, FlightMode, TelemetryToPayloadMessage};
1011
use static_cell::StaticCell;
1112

1213
pub const CAN_QUEUE_SIZE: usize = 3; // TODO
@@ -46,8 +47,9 @@ pub async fn spawn(
4647
.leave_disabled();
4748

4849
let telemetry_filter = filter::Mask32::frames_with_std_id(
49-
StandardId::new(CanBusMessageId::TelemetryBroadcast(0).into()).unwrap(),
50-
StandardId::new(0x700).unwrap(),
50+
//StandardId::new(CanBusMessageId::TelemetryBroadcast(0).into()).unwrap(),
51+
StandardId::new(0x1af).unwrap(),
52+
StandardId::new(0x7ff).unwrap(),
5153
);
5254

5355
can.modify_filters().enable_bank(0, Fifo::Fifo0, telemetry_filter);
@@ -86,9 +88,11 @@ async fn run_rx(
8688
can_rx: &'static mut CanRx<'static, 'static, CAN>,
8789
publisher: Publisher<'static, CriticalSectionRawMutex, CanFrame, CAN_QUEUE_SIZE, NUM_CAN_SUBSCRIBERS, 1>,
8890
) -> ! {
91+
info!("Running RX...");
8992
loop {
9093
match can_rx.read().await {
9194
Ok(envelope) => {
95+
info!("got envelope");
9296
let frame = envelope.frame;
9397
let Some(data) = frame.data() else {
9498
continue;
@@ -121,10 +125,11 @@ pub async fn run_flight_mode_listener(
121125
) -> ! {
122126
loop {
123127
let (sid, data) = can_subscriber.next_message_pure().await;
124-
if sid == CanBusMessageId::TelemetryBroadcast(0).into() {
125-
if let Ok(Some(msg)) = TelemetryToPayloadMessage::parse(data) {
126-
flight_mode_publisher.publish_immediate(msg.mode);
127-
}
128-
}
128+
info!("blub");
129+
//if sid == CanBusMessageId::TelemetryBroadcast(0).into() {
130+
// if let Ok(Some(msg)) = TelemetryToPayloadMessage::parse(data) {
131+
// flight_mode_publisher.publish_immediate(msg.mode);
132+
// }
133+
//}
129134
}
130135
}

firmwares/fancyfins/src/main.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
#![no_main]
33

44
use embassy_executor::Spawner;
5+
use embassy_stm32::Config;
56
use embassy_stm32::adc::Adc;
67
use embassy_stm32::gpio::Input;
78
use embassy_stm32::peripherals::*;
89
use embassy_stm32::time::Hertz;
910
use embassy_stm32::wdg::IndependentWatchdog;
10-
use embassy_stm32::Config;
1111
use embassy_sync::pubsub::PubSubChannel;
1212
use embassy_time::{Delay, Duration, Ticker};
1313

1414
use {defmt_rtt as _, panic_probe as _};
1515

1616
mod can;
1717
mod leds;
18-
mod strain_gauge;
18+
//mod strain_gauge;
1919

2020
use can::*;
2121

@@ -51,7 +51,7 @@ async fn main(low_priority_spawner: Spawner) {
5151
let p = embassy_stm32::init(config);
5252

5353
// Remap CAN to be on PB8/9
54-
embassy_stm32::pac::AFIO.mapr().modify(|w| w.set_can1_remap(2));
54+
//embassy_stm32::pac::AFIO.mapr().modify(|w| w.set_can1_remap(2));
5555

5656
let addr0 = Input::new(p.PA8, embassy_stm32::gpio::Pull::Up);
5757
let addr1 = Input::new(p.PA9, embassy_stm32::gpio::Pull::Up);
@@ -69,7 +69,7 @@ async fn main(low_priority_spawner: Spawner) {
6969
let can_in = CAN_IN.init(PubSubChannel::new());
7070
let can_out = CAN_OUT.init(PubSubChannel::new());
7171
// Can RX on PB8 can TX on PB9
72-
let can = embassy_stm32::can::Can::new(p.CAN, p.PB8, p.PB9, Irqs);
72+
let can = embassy_stm32::can::Can::new(p.CAN, p.PA11, p.PA12, Irqs);
7373

7474
// Start main CAN RX/TX tasks
7575
can::spawn(can, low_priority_spawner, can_in.publisher().unwrap(), can_out.subscriber().unwrap()).await;
@@ -89,16 +89,16 @@ async fn main(low_priority_spawner: Spawner) {
8989
let mut adc = Adc::new(p.ADC1, &mut Delay);
9090
adc.set_sample_time(embassy_stm32::adc::SampleTime::Cycles239_5);
9191

92-
low_priority_spawner
93-
.spawn(strain_gauge::run(
94-
address,
95-
adc,
96-
p.PC0,
97-
p.PC1,
98-
p.PC2,
99-
p.PC3,
100-
flight_mode.subscriber().unwrap(),
101-
can_out.publisher().unwrap(),
102-
))
103-
.unwrap();
92+
//low_priority_spawner
93+
// .spawn(strain_gauge::run(
94+
// address,
95+
// adc,
96+
// p.PC0,
97+
// p.PC1,
98+
// p.PC2,
99+
// p.PC3,
100+
// flight_mode.subscriber().unwrap(),
101+
// can_out.publisher().unwrap(),
102+
// ))
103+
// .unwrap();
104104
}

0 commit comments

Comments
 (0)