Implement RTC #1

Merged
paoda merged 14 commits from rtc into main 2022-09-17 23:36:34 +00:00
1 changed files with 3 additions and 6 deletions
Showing only changes of commit 1c52c0bf91 - Show all commits

View File

@ -44,8 +44,7 @@ pub fn init(allocator: Allocator, rom_path: []const u8, save_path: ?[]const u8)
pub fn setupGpio(self: *Self) void {
switch (self.gpio.device.kind) {
.Rtc => {
const ptr = self.gpio.device.ptr orelse @panic("RTC ptr is missing despite GPIO Device Kind");
const clock = @ptrCast(*Clock, @alignCast(@alignOf(*Clock), ptr));
const clock = @ptrCast(*Clock, @alignCast(@alignOf(*Clock), self.gpio.device.ptr.?));
Clock.init(clock, &self.gpio);
},
.None => {},
@ -265,8 +264,7 @@ const Gpio = struct {
fn step(self: *Device, value: u4) void {
switch (self.kind) {
.Rtc => {
const ptr = self.ptr orelse @panic("Device.ptr should != null when Device.kind == .Rtc");
const clock = @ptrCast(*Clock, @alignCast(@alignOf(*Clock), ptr));
const clock = @ptrCast(*Clock, @alignCast(@alignOf(*Clock), self.ptr.?));
clock.step(Clock.GpioData{ .raw = value });
},
@ -304,8 +302,7 @@ const Gpio = struct {
fn deinit(self: This, allocator: Allocator) void {
switch (self.device.kind) {
.Rtc => {
const ptr = self.device.ptr orelse @panic("Device.ptr should != null when Device.kind == .Rtc");
allocator.destroy(@ptrCast(*Clock, @alignCast(@alignOf(*Clock), ptr)));
allocator.destroy(@ptrCast(*Clock, @alignCast(@alignOf(*Clock), self.device.ptr.?)));
},
.None => {},
}