#![cfg_attr(not(feature = "std"), no_std)]

pub mod axis; // include axis management module
pub mod mapping; // include button mapping module for buttons dependency
pub mod button_matrix; // include button matrix module for buttons dependency
pub mod buttons; // include button management module
pub mod calibration; // include calibration management module
pub mod expo; // include your module
pub mod hardware; // include hardware module for storage dependency
pub mod status; // include status LED module
pub mod storage; // include storage module
pub mod usb_joystick_device; // include USB joystick device module
pub mod usb_report; // include USB HID report generation module

// re-export useful items if you want
pub use axis::{AxisManager, GimbalAxis, VirtualAxis};
pub use calibration::CalibrationManager;
pub use expo::{ExpoLUT, apply_expo_curve, constrain, generate_expo_lut};
pub use storage::{read_axis_calibration, read_gimbal_mode, write_calibration_data, StorageError};
pub use usb_report::{get_joystick_report, axis_12bit_to_i16};

// put common constants here too
pub const ADC_MIN: u16 = 0;
pub const ADC_MAX: u16 = 4095;
pub const AXIS_CENTER: u16 = ADC_MAX / 2;
