Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
67bf3ddadb | ||
|
|
ce5183da38 | ||
|
|
6407131a00 |
@@ -31,4 +31,3 @@ creaturedex.wiki/
|
|||||||
# KiCad
|
# KiCad
|
||||||
*.zip
|
*.zip
|
||||||
*.lck
|
*.lck
|
||||||
schematics/.history/
|
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
"vias": 1.0,
|
"vias": 1.0,
|
||||||
"zones": 0.6
|
"zones": 0.6
|
||||||
},
|
},
|
||||||
"prototype_zone_fills": false,
|
|
||||||
"selection_filter": {
|
"selection_filter": {
|
||||||
"dimensions": true,
|
"dimensions": true,
|
||||||
"footprints": true,
|
"footprints": true,
|
||||||
@@ -55,7 +54,6 @@
|
|||||||
"zone_display_mode": 0
|
"zone_display_mode": 0
|
||||||
},
|
},
|
||||||
"git": {
|
"git": {
|
||||||
"integration_disabled": false,
|
|
||||||
"repo_type": "",
|
"repo_type": "",
|
||||||
"repo_username": "",
|
"repo_username": "",
|
||||||
"ssh_key": ""
|
"ssh_key": ""
|
||||||
@@ -75,7 +73,6 @@
|
|||||||
"filter_text": "",
|
"filter_text": "",
|
||||||
"group_by_constraint": false,
|
"group_by_constraint": false,
|
||||||
"group_by_netclass": false,
|
"group_by_netclass": false,
|
||||||
"show_time_domain_details": false,
|
|
||||||
"show_unconnected_nets": false,
|
"show_unconnected_nets": false,
|
||||||
"show_zero_pad_nets": false,
|
"show_zero_pad_nets": false,
|
||||||
"sort_ascending": true,
|
"sort_ascending": true,
|
||||||
@@ -86,7 +83,6 @@
|
|||||||
"files": []
|
"files": []
|
||||||
},
|
},
|
||||||
"schematic": {
|
"schematic": {
|
||||||
"hierarchy_collapsed": [],
|
|
||||||
"selection_filter": {
|
"selection_filter": {
|
||||||
"graphics": true,
|
"graphics": true,
|
||||||
"images": true,
|
"images": true,
|
||||||
@@ -94,7 +90,6 @@
|
|||||||
"lockedItems": false,
|
"lockedItems": false,
|
||||||
"otherItems": true,
|
"otherItems": true,
|
||||||
"pins": true,
|
"pins": true,
|
||||||
"ruleAreas": true,
|
|
||||||
"symbols": true,
|
"symbols": true,
|
||||||
"text": true,
|
"text": true,
|
||||||
"wires": true
|
"wires": true
|
||||||
|
|||||||
@@ -10,28 +10,17 @@
|
|||||||
"via_dimensions": []
|
"via_dimensions": []
|
||||||
},
|
},
|
||||||
"ipc2581": {
|
"ipc2581": {
|
||||||
"bom_rev": "",
|
|
||||||
"dist": "",
|
"dist": "",
|
||||||
"distpn": "",
|
"distpn": "",
|
||||||
"internal_id": "",
|
"internal_id": "",
|
||||||
"mfg": "",
|
"mfg": "",
|
||||||
"mpn": "",
|
"mpn": ""
|
||||||
"sch_revision": ""
|
|
||||||
},
|
},
|
||||||
"layer_pairs": [],
|
"layer_pairs": [],
|
||||||
"layer_presets": [],
|
"layer_presets": [],
|
||||||
"viewports": []
|
"viewports": []
|
||||||
},
|
},
|
||||||
"boards": [],
|
"boards": [],
|
||||||
"component_class_settings": {
|
|
||||||
"assignments": [],
|
|
||||||
"meta": {
|
|
||||||
"version": 0
|
|
||||||
},
|
|
||||||
"sheet_component_classes": {
|
|
||||||
"enabled": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cvpcb": {
|
"cvpcb": {
|
||||||
"equivalence_files": []
|
"equivalence_files": []
|
||||||
},
|
},
|
||||||
@@ -221,14 +210,11 @@
|
|||||||
"duplicate_sheet_names": "error",
|
"duplicate_sheet_names": "error",
|
||||||
"endpoint_off_grid": "warning",
|
"endpoint_off_grid": "warning",
|
||||||
"extra_units": "error",
|
"extra_units": "error",
|
||||||
"field_name_whitespace": "warning",
|
|
||||||
"footprint_filter": "ignore",
|
"footprint_filter": "ignore",
|
||||||
"footprint_link_issues": "warning",
|
"footprint_link_issues": "warning",
|
||||||
"four_way_junction": "ignore",
|
"four_way_junction": "ignore",
|
||||||
"global_label_dangling": "warning",
|
"global_label_dangling": "warning",
|
||||||
"ground_pin_not_ground": "warning",
|
|
||||||
"hier_label_mismatch": "error",
|
"hier_label_mismatch": "error",
|
||||||
"isolated_pin_label": "warning",
|
|
||||||
"label_dangling": "error",
|
"label_dangling": "error",
|
||||||
"label_multiple_wires": "warning",
|
"label_multiple_wires": "warning",
|
||||||
"lib_symbol_issues": "warning",
|
"lib_symbol_issues": "warning",
|
||||||
@@ -251,7 +237,6 @@
|
|||||||
"similar_power": "warning",
|
"similar_power": "warning",
|
||||||
"simulation_model_issue": "ignore",
|
"simulation_model_issue": "ignore",
|
||||||
"single_global_label": "ignore",
|
"single_global_label": "ignore",
|
||||||
"stacked_pin_name": "warning",
|
|
||||||
"unannotated": "error",
|
"unannotated": "error",
|
||||||
"unconnected_wire_endpoint": "warning",
|
"unconnected_wire_endpoint": "warning",
|
||||||
"undefined_netclass": "error",
|
"undefined_netclass": "error",
|
||||||
@@ -284,14 +269,13 @@
|
|||||||
"priority": 2147483647,
|
"priority": 2147483647,
|
||||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||||
"track_width": 0.2,
|
"track_width": 0.2,
|
||||||
"tuning_profile": "",
|
|
||||||
"via_diameter": 0.6,
|
"via_diameter": 0.6,
|
||||||
"via_drill": 0.3,
|
"via_drill": 0.3,
|
||||||
"wire_width": 6
|
"wire_width": 6
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"meta": {
|
"meta": {
|
||||||
"version": 5
|
"version": 4
|
||||||
},
|
},
|
||||||
"net_colors": null,
|
"net_colors": null,
|
||||||
"netclass_assignments": null,
|
"netclass_assignments": null,
|
||||||
@@ -313,10 +297,6 @@
|
|||||||
},
|
},
|
||||||
"schematic": {
|
"schematic": {
|
||||||
"annotate_start_num": 0,
|
"annotate_start_num": 0,
|
||||||
"annotation": {
|
|
||||||
"method": 0,
|
|
||||||
"sort_order": 0
|
|
||||||
},
|
|
||||||
"bom_export_filename": "${PROJECTNAME}.csv",
|
"bom_export_filename": "${PROJECTNAME}.csv",
|
||||||
"bom_fmt_presets": [],
|
"bom_fmt_presets": [],
|
||||||
"bom_fmt_settings": {
|
"bom_fmt_settings": {
|
||||||
@@ -388,7 +368,6 @@
|
|||||||
"sort_asc": true,
|
"sort_asc": true,
|
||||||
"sort_field": "Reference"
|
"sort_field": "Reference"
|
||||||
},
|
},
|
||||||
"bus_aliases": {},
|
|
||||||
"connection_grid_size": 50.0,
|
"connection_grid_size": 50.0,
|
||||||
"drawing": {
|
"drawing": {
|
||||||
"dashed_lines_dash_length_ratio": 12.0,
|
"dashed_lines_dash_length_ratio": 12.0,
|
||||||
@@ -396,7 +375,6 @@
|
|||||||
"default_line_thickness": 6.0,
|
"default_line_thickness": 6.0,
|
||||||
"default_text_size": 50.0,
|
"default_text_size": 50.0,
|
||||||
"field_names": [],
|
"field_names": [],
|
||||||
"hop_over_size_choice": 0,
|
|
||||||
"intersheets_ref_own_page": false,
|
"intersheets_ref_own_page": false,
|
||||||
"intersheets_ref_prefix": "",
|
"intersheets_ref_prefix": "",
|
||||||
"intersheets_ref_short": false,
|
"intersheets_ref_short": false,
|
||||||
@@ -420,7 +398,6 @@
|
|||||||
"net_format_name": "",
|
"net_format_name": "",
|
||||||
"page_layout_descr_file": "",
|
"page_layout_descr_file": "",
|
||||||
"plot_directory": "",
|
"plot_directory": "",
|
||||||
"reuse_designators": true,
|
|
||||||
"space_save_all_events": true,
|
"space_save_all_events": true,
|
||||||
"spice_current_sheet_as_root": false,
|
"spice_current_sheet_as_root": false,
|
||||||
"spice_external_command": "spice \"%I\"",
|
"spice_external_command": "spice \"%I\"",
|
||||||
@@ -429,28 +406,13 @@
|
|||||||
"spice_save_all_dissipations": false,
|
"spice_save_all_dissipations": false,
|
||||||
"spice_save_all_voltages": false,
|
"spice_save_all_voltages": false,
|
||||||
"subpart_first_id": 65,
|
"subpart_first_id": 65,
|
||||||
"subpart_id_separator": 0,
|
"subpart_id_separator": 0
|
||||||
"top_level_sheets": [
|
|
||||||
{
|
|
||||||
"filename": "creaturedex.kicad_sch",
|
|
||||||
"name": "creaturedex",
|
|
||||||
"uuid": "f0cf9cac-01dc-4071-b72f-ebf42dbd12d6"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"used_designators": "",
|
|
||||||
"variants": []
|
|
||||||
},
|
},
|
||||||
"sheets": [
|
"sheets": [
|
||||||
[
|
[
|
||||||
"f0cf9cac-01dc-4071-b72f-ebf42dbd12d6",
|
"f0cf9cac-01dc-4071-b72f-ebf42dbd12d6",
|
||||||
"creaturedex"
|
"Root"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"text_variables": {},
|
"text_variables": {}
|
||||||
"tuning_profiles": {
|
|
||||||
"meta": {
|
|
||||||
"version": 0
|
|
||||||
},
|
|
||||||
"tuning_profiles_impedance_geometric": []
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+240
-802
File diff suppressed because it is too large
Load Diff
+2
-14
@@ -30,7 +30,7 @@ use embedded_hal_bus::i2c::AtomicDevice;
|
|||||||
use embedded_hal_bus::util::AtomicCell;
|
use embedded_hal_bus::util::AtomicCell;
|
||||||
use esp_hal::Blocking;
|
use esp_hal::Blocking;
|
||||||
use esp_hal::clock::CpuClock;
|
use esp_hal::clock::CpuClock;
|
||||||
use esp_hal::gpio::{Input, InputConfig, Level, Output, OutputConfig, Pull};
|
use esp_hal::gpio::{Input, InputConfig, Pull};
|
||||||
use esp_hal::i2c::master::{Config as I2cConfig, I2c};
|
use esp_hal::i2c::master::{Config as I2cConfig, I2c};
|
||||||
use esp_hal::timer::timg::TimerGroup;
|
use esp_hal::timer::timg::TimerGroup;
|
||||||
use log::error;
|
use log::error;
|
||||||
@@ -74,22 +74,10 @@ async fn main(spawner: Spawner) {
|
|||||||
peripherals.GPIO37, // miso
|
peripherals.GPIO37, // miso
|
||||||
peripherals.GPIO11, // primary cs
|
peripherals.GPIO11, // primary cs
|
||||||
peripherals.GPIO13, // oled cs
|
peripherals.GPIO13, // oled cs
|
||||||
peripherals.GPIO10, // primary reset
|
peripherals.GPIO10, // shared reset
|
||||||
peripherals.GPIO47, // secondary reset
|
|
||||||
peripherals.GPIO12, // shared dc
|
peripherals.GPIO12, // shared dc
|
||||||
)));
|
)));
|
||||||
|
|
||||||
let _secondary_oled_cs_2 = Output::new(
|
|
||||||
peripherals.GPIO14,
|
|
||||||
Level::High,
|
|
||||||
OutputConfig::default(),
|
|
||||||
);
|
|
||||||
let _secondary_oled_cs_3 = Output::new(
|
|
||||||
peripherals.GPIO21,
|
|
||||||
Level::High,
|
|
||||||
OutputConfig::default(),
|
|
||||||
);
|
|
||||||
|
|
||||||
let config = I2cConfig::default().with_frequency(esp_hal::time::Rate::from_khz(400));
|
let config = I2cConfig::default().with_frequency(esp_hal::time::Rate::from_khz(400));
|
||||||
let i2c = match I2c::new(peripherals.I2C0, config) {
|
let i2c = match I2c::new(peripherals.I2C0, config) {
|
||||||
Ok(bus) => bus
|
Ok(bus) => bus
|
||||||
|
|||||||
+8
-10
@@ -225,7 +225,7 @@ pub struct Sprite {
|
|||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Card {
|
pub struct Card {
|
||||||
pub uuid: u32,
|
pub uuid: String,
|
||||||
pub event: Events,
|
pub event: Events,
|
||||||
pub cardtype: CardType,
|
pub cardtype: CardType,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
@@ -241,16 +241,14 @@ pub struct Card {
|
|||||||
impl<'a> TryFrom<RawCard> for Card {
|
impl<'a> TryFrom<RawCard> for Card {
|
||||||
type Error = &'static str;
|
type Error = &'static str;
|
||||||
|
|
||||||
fn try_from(raw_card: RawCard) -> Result<Self, Self::Error> {
|
fn try_from(payload: RawCard) -> Result<Self, Self::Error> {
|
||||||
let uuid: u32 = (u16::from_ne_bytes(raw_card.event_encoding) as u32) << 16
|
let uuid: String = "empty for now".into(); //str::from_utf8(payload.card_uuid).unwrap().into();
|
||||||
| (u16::from_ne_bytes(raw_card.card_uuid) as u32);
|
let event = decode_known_event(&payload.event_encoding);
|
||||||
|
let cardtype = CardType::from(payload.card_type);
|
||||||
let event = decode_known_event(&raw_card.event_encoding);
|
let (name, trait1, trait2, trait3) = decode_packed_card_text(&payload.packed_card_text);
|
||||||
let cardtype = CardType::from(raw_card.card_type);
|
let secret = decode_secret(&payload.secret);
|
||||||
let (name, trait1, trait2, trait3) = decode_packed_card_text(&raw_card.packed_card_text);
|
|
||||||
let secret = decode_secret(&raw_card.secret);
|
|
||||||
let sprite = Sprite {
|
let sprite = Sprite {
|
||||||
data: raw_card.sprite.to_vec(),
|
data: payload.sprite.to_vec(),
|
||||||
};
|
};
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
uuid,
|
uuid,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
use crate::display::primary_lcd::{PrimaryLcdDisplay, init_primary_lcd_on_bus};
|
||||||
use alloc::boxed::Box;
|
use alloc::boxed::Box;
|
||||||
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
|
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
|
||||||
use embedded_hal::digital::ErrorType;
|
use embedded_hal::digital::ErrorType;
|
||||||
@@ -11,7 +12,6 @@ use esp_hal::spi::master::{Config as SpiConfig, Spi};
|
|||||||
use esp_hal::time::Rate;
|
use esp_hal::time::Rate;
|
||||||
|
|
||||||
use crate::display::secondary_oled::{SecondaryOledDisplay, init_secondary_oled_on_bus};
|
use crate::display::secondary_oled::{SecondaryOledDisplay, init_secondary_oled_on_bus};
|
||||||
use crate::display::primary_lcd::{PrimaryLcdDisplay, init_primary_lcd_on_bus};
|
|
||||||
|
|
||||||
use core::cell::RefCell;
|
use core::cell::RefCell;
|
||||||
use embassy_sync::blocking_mutex::Mutex as BlockingMutex;
|
use embassy_sync::blocking_mutex::Mutex as BlockingMutex;
|
||||||
@@ -52,15 +52,14 @@ pub type DualPrimaryDisplay<'a> =
|
|||||||
pub type DualSecondaryDisplay<'a> =
|
pub type DualSecondaryDisplay<'a> =
|
||||||
SecondaryOledDisplay<'a, DisplaySpiBus, SharedPin<'a, Output<'a>>, SharedPin<'a, Output<'a>>>;
|
SecondaryOledDisplay<'a, DisplaySpiBus, SharedPin<'a, Output<'a>>, SharedPin<'a, Output<'a>>>;
|
||||||
|
|
||||||
pub fn init_dual_displays<SPI, SCK, MOSI, MISO, CS1, CS2, RES1, RES2, DC>(
|
pub fn init_dual_displays<SPI, SCK, MOSI, MISO, CS1, CS2, RES, DC>(
|
||||||
spi_peripheral: SPI,
|
spi_peripheral: SPI,
|
||||||
sck: SCK,
|
sck: SCK,
|
||||||
mosi: MOSI,
|
mosi: MOSI,
|
||||||
miso: MISO,
|
miso: MISO,
|
||||||
cs_primary: CS1,
|
cs_primary: CS1,
|
||||||
cs_secondary: CS2,
|
cs_secondary: CS2,
|
||||||
reset_primary: RES1,
|
reset_pin: RES,
|
||||||
reset_secondary: RES2,
|
|
||||||
dc_pin: DC,
|
dc_pin: DC,
|
||||||
) -> (DualPrimaryDisplay<'static>, DualSecondaryDisplay<'static>)
|
) -> (DualPrimaryDisplay<'static>, DualSecondaryDisplay<'static>)
|
||||||
where
|
where
|
||||||
@@ -70,8 +69,7 @@ where
|
|||||||
MISO: PeripheralInput<'static>,
|
MISO: PeripheralInput<'static>,
|
||||||
CS1: OutputPin + 'static,
|
CS1: OutputPin + 'static,
|
||||||
CS2: OutputPin + 'static,
|
CS2: OutputPin + 'static,
|
||||||
RES1: OutputPin + 'static,
|
RES: OutputPin + 'static,
|
||||||
RES2: OutputPin + 'static,
|
|
||||||
DC: OutputPin + 'static,
|
DC: OutputPin + 'static,
|
||||||
{
|
{
|
||||||
let spi = Spi::new(
|
let spi = Spi::new(
|
||||||
@@ -86,17 +84,15 @@ where
|
|||||||
.with_miso(miso);
|
.with_miso(miso);
|
||||||
|
|
||||||
let bus_static: &'static AtomicCell<_> = Box::leak(Box::new(AtomicCell::new(spi)));
|
let bus_static: &'static AtomicCell<_> = Box::leak(Box::new(AtomicCell::new(spi)));
|
||||||
let reset_primary_static =
|
let reset_static =
|
||||||
SharedPin::pre_wrap(Output::new(reset_primary, Level::High, OutputConfig::default()));
|
SharedPin::pre_wrap(Output::new(reset_pin, Level::High, OutputConfig::default()));
|
||||||
let reset_secondary_static =
|
|
||||||
SharedPin::pre_wrap(Output::new(reset_secondary, Level::High, OutputConfig::default()));
|
|
||||||
let dc_static = SharedPin::pre_wrap(Output::new(dc_pin, Level::High, OutputConfig::default()));
|
let dc_static = SharedPin::pre_wrap(Output::new(dc_pin, Level::High, OutputConfig::default()));
|
||||||
let mut delay = Delay::new();
|
let mut delay = Delay::new();
|
||||||
|
|
||||||
let primary = init_primary_lcd_on_bus(
|
let primary = init_primary_lcd_on_bus(
|
||||||
bus_static,
|
bus_static,
|
||||||
cs_primary,
|
cs_primary,
|
||||||
SharedPin::new(reset_primary_static),
|
SharedPin::new(reset_static),
|
||||||
SharedPin::new(dc_static),
|
SharedPin::new(dc_static),
|
||||||
&mut delay,
|
&mut delay,
|
||||||
);
|
);
|
||||||
@@ -104,7 +100,7 @@ where
|
|||||||
let secondary = init_secondary_oled_on_bus(
|
let secondary = init_secondary_oled_on_bus(
|
||||||
bus_static,
|
bus_static,
|
||||||
cs_secondary,
|
cs_secondary,
|
||||||
SharedPin::new(reset_secondary_static),
|
SharedPin::new(reset_static),
|
||||||
SharedPin::new(dc_static),
|
SharedPin::new(dc_static),
|
||||||
&mut delay,
|
&mut delay,
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user