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)
|
void OutputGPIOInterface::activate(output::items::ISound *sound)
|
||||||
{
|
{
|
||||||
|
std::lock_guard<std::mutex> guard(output_item_mutex);
|
||||||
|
|
||||||
write_sound_address(sound->address);
|
write_sound_address(sound->address);
|
||||||
|
|
||||||
GPIOInterface::write_pin(pins_sound["fire"], 1);
|
fire_sound(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutputGPIOInterface::activate(output::items::IDriverBoardItem *driver_board_item)
|
void OutputGPIOInterface::activate(output::items::IDriverBoardItem *driver_board_item)
|
||||||
@@ -127,9 +129,13 @@ void OutputGPIOInterface::deactivate(output::items::IDriverBoardItem *driver_boa
|
|||||||
write_data(0);
|
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)
|
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)
|
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;
|
virtual ~OutputGPIOInterface() = default;
|
||||||
|
|
||||||
void activate(output::items::ISound *sound);
|
|
||||||
void activate(output::items::IDriverBoardItem *driver_board_item);
|
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::IDriverBoardItem *driver_board_item);
|
||||||
|
void deactivate(output::items::ISound *sound);
|
||||||
|
|
||||||
void write_display(output::items::IDisplay &display);
|
void write_display(output::items::IDisplay &display);
|
||||||
|
|
||||||
@@ -52,14 +52,15 @@ private:
|
|||||||
void initialize_pins();
|
void initialize_pins();
|
||||||
void initialize_all_pins(u_int8_t pin_base);
|
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 write_driver_board_address(u_int8_t address);
|
||||||
|
|
||||||
void select_mux(u_int8_t latch);
|
void select_mux(u_int8_t latch);
|
||||||
void select_latch(u_int8_t latch);
|
void select_latch(u_int8_t latch);
|
||||||
void select_pin(u_int8_t pin);
|
void select_pin(u_int8_t pin);
|
||||||
void write_data(bool data);
|
void write_data(bool data);
|
||||||
|
|
||||||
|
void write_sound_address(u_int8_t address);
|
||||||
|
void fire_sound(bool fire);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex output_item_mutex;
|
std::mutex output_item_mutex;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user