nrf.zig (1951B)
1 const std = @import("std"); 2 const shared = @import("shared"); 3 const pi = @import("pi"); 4 5 const nrf = pi.devices.nrf; 6 const uart = pi.devices.mini_uart; 7 8 // Server: 9 // CS - 8 10 // CE - 6 11 // 12 // Client: 13 // CS - 7 14 // CE - 5 15 pub fn main() !void { 16 uart.print("creating client/server\n", .{}); 17 18 const client_addr = 0xE5E5E5E5E5; 19 // const server_addr = 0xD5D5D5; 20 21 var client_dev: nrf.Device = try .init(.{ 22 .spi_config = .{ 23 .chip_select = .@"1", 24 .pins = .Lower, 25 }, 26 .ce_pin = 5, 27 .int_pin = 22, 28 .payload_size = 4, 29 }); 30 uart.print("initialized client\n", .{}); 31 32 var server_dev: nrf.Device = try .init(.{ 33 .spi_config = .{ 34 .chip_select = .@"0", 35 .pins = .Lower, 36 }, 37 .ce_pin = 6, 38 .int_pin = 23, 39 .payload_size = 4, 40 }); 41 uart.print("initialized server\n", .{}); 42 43 uart.print("running tests\n", .{}); 44 server_dev.set_tx_addr(client_addr); 45 try server_dev.set_rx_addr(0, client_addr); 46 try client_dev.set_rx_addr(0, client_addr); 47 client_dev.connect(); 48 49 for (0..1000) |i| { 50 uart.print("trial {}: ", .{i}); 51 52 { 53 var buffer: [4]u8 = undefined; 54 std.mem.writeInt(u32, &buffer, i, .little); 55 if (!try server_dev.transmit(&buffer, 128)) { 56 uart.print("server failed to transmit\n", .{}); 57 continue; 58 } 59 } 60 61 { 62 var buffer: [4]u8 = undefined; 63 if (try client_dev.receive(&buffer) > 0) { 64 const x = std.mem.readInt(u32, &buffer, .little); 65 66 if (x == i) { 67 uart.print("{} == {}\n", .{ x, i }); 68 } else { 69 uart.print("{} != {}\n", .{ x, i }); 70 } 71 } else { 72 uart.print("timed out\n", .{}); 73 } 74 } 75 } 76 77 uart.print("done!\n", .{}); 78 }