sylveos

Toy Operating System
Log | Files | Refs

nrf-server.zig (1155B)


      1 const std = @import("std");
      2 const shared = @import("shared");
      3 const pi = @import("pi");
      4 
      5 const nrf = pi.devices.nrf;
      6 const clock = pi.devices.clock;
      7 const uart = pi.devices.mini_uart;
      8 
      9 // Server:
     10 // CS - 8
     11 // CE - 6
     12 //
     13 // Client:
     14 // CS - 7
     15 // CE - 5
     16 pub fn main() !void {
     17     uart.print("creating server\n", .{});
     18 
     19     const client_addr = 0xE5E5E5E5E5;
     20 
     21     var server_dev: nrf.Device = try .init(.{
     22         .spi_config = .{
     23             .chip_select = .@"0",
     24             .pins = .Lower,
     25         },
     26         .ce_pin = 6,
     27         .int_pin = 23,
     28         .payload_size = 4,
     29     });
     30     uart.print("initialized server\n", .{});
     31 
     32     server_dev.set_tx_addr(client_addr);
     33     try server_dev.set_rx_addr(0, client_addr);
     34 
     35     const msg = "Hello, World!\r";
     36 
     37     for (msg) |b| {
     38         uart.print("Sending {c}: ", .{b});
     39 
     40         var buffer: [4]u8 = .{ 0, 0, 0, b };
     41         if (try server_dev.transmit(&buffer, 1000)) {
     42             uart.print("transmitted\n", .{});
     43         } else {
     44             uart.print("server failed to transmit\n", .{});
     45             continue;
     46         }
     47 
     48         clock.delay_ms(10);
     49     }
     50 
     51     uart.print("done!\n", .{});
     52     uart.flush();
     53 }