Skip to content

Commit 8258999

Browse files
committed
Fix #208: Planning and first steps for Class C
1 parent 96184db commit 8258999

File tree

5 files changed

+566
-182
lines changed

5 files changed

+566
-182
lines changed

doc/CLASS-C.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Notes on Class C implementation
2+
3+
These are working notes for Class C implementation, not really permanent documentation.
4+
5+
- [x] Sketch class C changes in `LMIC-FSM.cdd` / `LMIC-FSM.pdf`
6+
- [x] Add the details on class C reception (channel use & spreading factor) to all the regional files. **_Not required; the class C parameters are the same as RX2._**
7+
- [x] make this modular (so that we don't make tiny devices carry the extra code footprint)
8+
- [x] add code for enabling / disabling class C mode (I think maybe there's a required uplink to announce that you're in class C)
9+
- [x] define in header file
10+
- [ ] write code - when class C is enabled, need to set a flag and re-evaluate the FSM; in other words, if someone turns on class C while the LMIC is busy, we need to synchronize things. Ditto, I think, for turning things off.
11+
- [ ] modify the radio driver to look for the class C flag on entry and stop reception without crashing.
12+
- [ ] add api for stopping an ongoing reception (for switching from RX2 to TX or RX1)
13+
- [ ] add code for processing class C downlinks
14+
- [ ] add api for starting a class C reception (rework the RX2 start-reception api from class A?)
15+
- [ ] add the code to the various states to start class C reception.
16+
17+
## Decisions
18+
19+
- Define "RX2 channel" to mean the channel, bandwidth and spreading factor used for class A RX2 downlinks, and for Class C downlinks.
20+
- We often will say "RX2 channel is open" to mean that the radio is (supposed to be) receiving on the RX2 channel.
21+
- Define "RX2 Window" to be the *time window* for a class A RX2 Window. The spec uses this also to mean "the RX2 channel is receiving" but we need to keep this straight.
22+
- `LMIC_ENABLE_class_c` if non-zero enables the class C code.
23+
24+
## Open Questions
25+
26+
- [ ] how does the device distinguish (if at all) between a class C downlink received during the RX2 window, and a class A downlink? Does it simply assume that the network does the right thing?
27+
- [ ] do we need to tell the rx frame processor whether a message was received during the RX2 window? Or can we let the network sort this out? For now, we arrange to be able to tell the rx frame processor, but we'll assume the network will sort things out.

0 commit comments

Comments
 (0)