implemented sound logic
This commit is contained in:
@@ -104,9 +104,11 @@ void OutputGPIOInterface::write_display(IDisplay &display)
|
||||
|
||||
void OutputGPIOInterface::activate(output::items::ISound *sound)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(output_item_mutex);
|
||||
|
||||
write_sound_address(sound->address);
|
||||
|
||||
GPIOInterface::write_pin(pins_sound["fire"], 1);
|
||||
fire_sound(1);
|
||||
}
|
||||
|
||||
void OutputGPIOInterface::activate(output::items::IDriverBoardItem *driver_board_item)
|
||||
@@ -127,9 +129,13 @@ void OutputGPIOInterface::deactivate(output::items::IDriverBoardItem *driver_boa
|
||||
write_data(0);
|
||||
}
|
||||
|
||||
void OutputGPIOInterface::write_sound_address(u_int8_t address)
|
||||
void OutputGPIOInterface::deactivate(output::items::ISound *sound)
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(output_item_mutex);
|
||||
|
||||
write_sound_address(sound->address);
|
||||
|
||||
fire_sound(0);
|
||||
}
|
||||
|
||||
void OutputGPIOInterface::write_driver_board_address(u_int8_t address)
|
||||
@@ -176,5 +182,21 @@ void OutputGPIOInterface::select_pin(u_int8_t pin)
|
||||
write_pin(pins_driver_board["pin-select-C"], pin & 0b100)
|
||||
}
|
||||
|
||||
void OutputGPIOInterface::write_sound_address(u_int8_t address)
|
||||
{
|
||||
write_pin(pins_sound["A"], address & 0b0000001)
|
||||
write_pin(pins_sound["B"], address & 0b0000010)
|
||||
write_pin(pins_sound["C"], address & 0b0000100)
|
||||
write_pin(pins_sound["D"], address & 0b0001000)
|
||||
write_pin(pins_sound["E"], address & 0b0010000)
|
||||
write_pin(pins_sound["F"], address & 0b0100000)
|
||||
write_pin(pins_sound["G"], address & 0b1000000)
|
||||
}
|
||||
|
||||
void OutputGPIOInterface::fire_sound(bool fire)
|
||||
{
|
||||
GPIOInterface::write_pin(pins_sound["fire"], fire);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,11 +33,11 @@ public:
|
||||
|
||||
virtual ~OutputGPIOInterface() = default;
|
||||
|
||||
void activate(output::items::ISound *sound);
|
||||
void activate(output::items::IDriverBoardItem *driver_board_item);
|
||||
void activate(output::items::ISound *sound);
|
||||
|
||||
void deactivate(output::items::ISound *sound);
|
||||
void deactivate(output::items::IDriverBoardItem *driver_board_item);
|
||||
void deactivate(output::items::ISound *sound);
|
||||
|
||||
void write_display(output::items::IDisplay &display);
|
||||
|
||||
@@ -52,14 +52,15 @@ private:
|
||||
void initialize_pins();
|
||||
void initialize_all_pins(u_int8_t pin_base);
|
||||
|
||||
void write_sound_address(u_int8_t address);
|
||||
void write_driver_board_address(u_int8_t address);
|
||||
|
||||
void select_mux(u_int8_t latch);
|
||||
void select_latch(u_int8_t latch);
|
||||
void select_pin(u_int8_t pin);
|
||||
void write_data(bool data);
|
||||
|
||||
void write_sound_address(u_int8_t address);
|
||||
void fire_sound(bool fire);
|
||||
|
||||
private:
|
||||
std::mutex output_item_mutex;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user