use crate::hal::pin::Pins;
use crate::hal::shift::*;
use core::usize;
pub fn setup(
datapin: usize,
clockpin: usize,
latchpin: usize,
decpt: bool,
common_anode: bool,
value: u8,
) {
let pins = Pins::new();
let mut data = pins.digital[datapin];
let mut clock = pins.digital[clockpin];
let mut latch = pins.digital[latchpin];
data.set_output();
latch.set_output();
clock.set_output();
out(datapin, clockpin, latchpin, decpt, common_anode, value);
}
pub fn myfn_update_display(
datapin: usize,
clockpin: usize,
latchpin: usize,
_decpt: bool,
common_anode: bool,
mut value: u8,
) {
let pins = Pins::new();
let mut latch = pins.digital[latchpin];
if common_anode {
value = value ^ 0b11111111; }
latch.low(); shift_out(datapin, clockpin, BitOrder::LSBFIRST, value); latch.high(); }
pub fn out(
datapin: usize,
clockpin: usize,
latchpin: usize,
decpt: bool,
common_anode: bool,
value: u8,
) {
let mut bits: u8 = myfn_num_to_bits(value);
if decpt {
bits = bits | 0b00000001; }
myfn_update_display(datapin, clockpin, latchpin, decpt, common_anode, bits);
}
pub fn myfn_num_to_bits(somenumber: u8) -> u8 {
if somenumber == 0 {
return 0b11111100;
} else if somenumber == 1 {
return 0b01100000;
} else if somenumber == 2 {
return 0b11011010;
} else if somenumber == 3 {
return 0b11110010;
} else if somenumber == 4 {
return 0b01100110;
} else if somenumber == 5 {
return 0b10110110;
} else if somenumber == 6 {
return 0b10111110;
} else if somenumber == 7 {
return 0b11100000;
} else if somenumber == 8 {
return 0b11111110;
} else if somenumber == 9 {
return 0b11110110;
} else if somenumber == 10 {
return 0b11101110; } else if somenumber == 11 {
return 0b00111110; } else if somenumber == 12 {
return 0b10011100; } else if somenumber == 13 {
return 0b01111010; } else if somenumber == 14 {
return 0b10011110; } else if somenumber == 15 {
return 0b10001110; } else {
return 0b10010010; }
}