802.11-TX: Reduce transmit power, add notes about legal requirements
This commit is contained in:
parent
4d7bef58a1
commit
2c50668e7e
2 changed files with 24 additions and 0 deletions
19
Readme.md
19
Readme.md
|
|
@ -32,6 +32,25 @@ Just prints a line for each received CAM.
|
|||
Generates and transmits a CAM when a GNSS update was received.
|
||||
Depends on the `gnss` feature.
|
||||
|
||||
Note: In germany, using the 5875 to 5915 MHz frequency band is only permitted for C-ITS use cases which implement transmit power reduction measures with at least 30 dB reduction range (or equivalent measures) and have a maximum EIRP of 33 dBm.
|
||||
This is based on EU regulation 2014/53/EU, so it applies to other EU countries in similar ways.
|
||||
The relevant harmonized standard is ETSI EN 302 571 which mandates (excerpt of most relevant points):
|
||||
|
||||
- a maximum power spectral density of 23 dBm/Mhz EIRP
|
||||
- transmit power control (TCP) in a range from 3 dBm up to the maximum output power of the equipment
|
||||
* used for CEN DSRC and HDR DSRC interference mitigation by implementing measures from ETSI TS 102 792
|
||||
+ Mode A or B: Output power less than 10 dBm EIRP and less than -65 or -45 dBm/MHz EIRP in CEN DSRC band -> **needs to be measured**
|
||||
+ Mode C: Maximum transmission time of less than 1 ms and at least a few 100 ms between transmission (realistically) -> **can't be ensured with big messages**
|
||||
+ Mode D: "any" realistically possible transmission time, but at least 500 ms between transmissions for ~5 ITS stations/ 1000ms for 10 ITS stations -> **safe to assume when we only send CAMs at 1 Hz**
|
||||
+ But modes C and D also need to:
|
||||
- use protected zone information from CAM messages
|
||||
- use a protected zone database, e.g. from www.asecap-pzdb.com
|
||||
* used for dynamic congestion control (DCC)
|
||||
+ mandatory mechanism described in ETSI EN 302 571, chapter 4.2.10
|
||||
|
||||
This is **not** implemented in this application!
|
||||
**So legally, you're not allowed to send with this.**
|
||||
|
||||
### UART
|
||||
Enable UART I/O protocol according to [docs/uart-protocol.md](./docs/uart-protocol.md).
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ mod screen;
|
|||
mod v2x_tx;
|
||||
|
||||
const WIFI_CHANNEL: radio::Channel = 180;
|
||||
const WIFI_TXPOWER: i8 = 10; // dBm, 2..20
|
||||
#[cfg(feature = "spat")]
|
||||
const SPAT_RATE_LIMIT: u8 = 5; // keep every n-th message
|
||||
#[cfg(any(feature = "cam_tx", feature = "uart"))]
|
||||
|
|
@ -163,9 +164,13 @@ async fn main(spawner: Spawner) -> ! {
|
|||
esp_radio::wifi::ControllerConfig::default(),
|
||||
)
|
||||
.expect("Failed to initialize Wi-Fi controller");
|
||||
|
||||
if let Err(err) = wifi_controller.set_band_mode(esp_radio::wifi::BandMode::_5G) {
|
||||
error!("Failed to set WiFi to 5GHz only: {err}");
|
||||
}
|
||||
if let Err(err) = wifi_controller.set_max_tx_power(WIFI_TXPOWER * 4) {
|
||||
error!("Failed to set WiFi TX power: {err}");
|
||||
}
|
||||
|
||||
critical_section::with(|cs| {
|
||||
WIFI_RX_QUEUE.borrow(cs).replace(Some(ArrayQueue::new(2)));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue