car-stereo/software/main/include/can_data.h

74 lines
1.1 KiB
C++

#pragma once
#include <cstdint>
#include <stdint.h>
#define RADIO_ID 0x165
#define VOLUME_ID 0x1A5
#define BUTTONS_ID 0x21f
namespace can {
enum Source : uint8_t {
Bluetooth = 0b111,
USB = 0b110,
AUX2 = 0b101,
AUX1 = 0b100,
CD_Changer = 0b011,
CD = 0b010,
Tuner = 0b001
};
enum DiskStatus : uint8_t {
Init = 0b00,
Unavailable = 0b01,
Available = 0b10
};
#pragma pack(1)
struct Radio {
uint8_t _1 : 5;
bool muted : 1;
uint8_t _2 : 1;
bool enabled : 1;
uint8_t _3 : 4;
bool cd_changer_available : 1;
DiskStatus disk_status : 2;
uint8_t _4 : 1;
uint8_t _5 : 4;
Source source : 3;
uint8_t _6 : 1;
uint8_t _7 : 8;
};
#pragma pack()
#pragma pack(1)
struct Buttons {
uint8_t _1 : 1;
bool source : 1;
bool volume_down : 1;
bool volume_up : 1;
uint8_t _2 : 2;
bool backward : 1;
bool forward : 1;
uint8_t scroll : 8;
uint8_t _3 : 8;
};
#pragma pack()
#pragma pack(1)
struct Volume {
uint8_t _upper : 3;
uint8_t volume : 5;
bool scrolled() {
return _upper == 0b000;
}
};
#pragma pack()
}