I have a bunch of functions, that takes u8
, but I feel, that I’d better pass an coerced enum(u8) to them.
I know about @intFromEnum
, but is there a proper way, to do it, instead of this:
pub fn init() void {
// Write to registers their initial values
writeReg(@intFromEnum(Reg.config), 0x08);
writeReg(@intFromEnum(Reg.en_aa), 0x3F);
writeReg(@intFromEnum(Reg.en_rx_addr), 0x03);
writeReg(@intFromEnum(Reg.setup_aw), 0x03);
writeReg(@intFromEnum(Reg.setup_retr), 0x03);
writeReg(@intFromEnum(Reg.rf_ch), 0x02);
writeReg(@intFromEnum(Reg.rf_setup), 0x0E);
writeReg(@intFromEnum(Reg.status), 0x00);
writeReg(@intFromEnum(Reg.rx_pw_p0), 0x00);
writeReg(@intFromEnum(Reg.rx_pw_p1), 0x00);
writeReg(@intFromEnum(Reg.rx_pw_p2), 0x00);
writeReg(@intFromEnum(Reg.rx_pw_p3), 0x00);
writeReg(@intFromEnum(Reg.rx_pw_p4), 0x00);
writeReg(@intFromEnum(Reg.rx_pw_p5), 0x00);
writeReg(@intFromEnum(Reg.dynpd), 0x00);
writeReg(@intFromEnum(Reg.feature), 0x00);
...
EDIT: If I would do unions, it’s creates no beauty, at least it’s shorter.
writeReg(.{.reg = Reg.feature}, 0x00);
But I dk how to pass same way multiple enum types properly…