-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Creating build with more defaults baked in
- Loading branch information
1 parent
d3ea85a
commit b9d49d4
Showing
5 changed files
with
203 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
143 changes: 143 additions & 0 deletions
143
software/config/euphonium/scripts/esp32/hardware_plugin.be
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
import math | ||
|
||
class HardwarePlugin : Plugin | ||
var registered_drivers | ||
var selected_driver | ||
|
||
def init() | ||
self.registered_drivers = [] | ||
self.apply_default_values() | ||
|
||
self.name = "hardware" | ||
self.display_name = "Hardware" | ||
self.type = "system" | ||
self.selected_driver = nil | ||
self.is_audio_output = true | ||
end | ||
|
||
def make_form(ctx, state) | ||
var drivers = [] | ||
|
||
for driver : self.registered_drivers | ||
drivers.push(driver.name) | ||
end | ||
|
||
ctx.create_group('boardGroup', { 'label': 'Board' }) | ||
board_names = [] | ||
for board : ESP32_BOARDS | ||
board_names.push(board["name"]) | ||
end | ||
ctx.select_field('board', { | ||
'label': "Select your board type", | ||
'default': "custom", | ||
'group': 'boardGroup', | ||
'values': board_names, | ||
'type': 'number' | ||
}) | ||
|
||
# if the user has selected a board, show a dialog asking if he wants to | ||
# change the gpio settings to this board | ||
if state.find("board") != self.state.find("board") | ||
ctx.modal_confirm("boardChanged", { | ||
'label': "Board changed", | ||
'hint': "The board you selected has changed to " + state.find("board") + ". Do you want to apply the new settings?", | ||
'group': 'boardGroup', | ||
'default': nil, | ||
'okValue': "confirmed_" + state.find("board"), | ||
'cancelValue': "cancelled_" + state.find("board") | ||
}) | ||
if state.find("boardChanged") == "confirmed_" + state.find("board") | ||
state["boardChanged"] = "cancelled_" + state.find("board") | ||
for board : ESP32_BOARDS | ||
if board["name"] == state.find("board") | ||
# copy the state defined for the board | ||
for key : board["state"].keys() | ||
state.setitem(key, board["state"][key]) | ||
end | ||
break | ||
end | ||
end | ||
end | ||
end | ||
|
||
ctx.create_group('driver', { 'label': 'DAC Driver' }) | ||
|
||
|
||
ctx.select_field('dac', { | ||
'label': "Select DAC chip driver", | ||
'default': "dummy", | ||
'group': 'driver', | ||
'values': drivers, | ||
'type': 'number' | ||
}) | ||
for driver : self.registered_drivers | ||
if driver.name == state['dac'] | ||
print("Found driver", driver) | ||
print("driver.make_config_form", driver.make_config_form) | ||
if driver.datasheet_link != nil && driver.datasheet_link != "" | ||
ctx.link_button('datasheet', { | ||
'label': "Datasheet", | ||
'link': driver.datasheet_link, | ||
'group': 'driver', | ||
'placeholder': 'PDF' | ||
}) | ||
end | ||
driver.make_config_form(ctx, state) | ||
break | ||
end | ||
end | ||
|
||
|
||
|
||
end | ||
|
||
# register driver implementation | ||
def register_driver(driver) | ||
self.registered_drivers.push(driver) | ||
end | ||
|
||
def select_driver(driver_name) | ||
if (self.selected_driver != nil) | ||
i2s.set_readable(false) | ||
self.selected_driver.unload_i2s() | ||
end | ||
|
||
for driver : self.registered_drivers | ||
if driver.name == driver_name | ||
self.selected_driver = driver | ||
self.selected_driver.state = self.state | ||
self.selected_driver.init_i2s() | ||
i2s.set_readable(true) | ||
end | ||
end | ||
end | ||
|
||
def init_audio() | ||
end | ||
|
||
def has_hardware_volume() | ||
if self.selected_driver != nil | ||
return self.selected_driver.hardware_volume_control | ||
end | ||
return false | ||
end | ||
|
||
def on_event(event, data) | ||
if event == EVENT_CONFIG_UPDATED | ||
self.select_driver(self.state['dac']) | ||
end | ||
|
||
if event == EVENT_VOLUME_UPDATED | ||
if self.selected_driver != nil | ||
self.selected_driver.set_volume(data) | ||
else | ||
print("Attempt to set volume on unselected driver") | ||
end | ||
|
||
end | ||
end | ||
end | ||
|
||
var hardware = HardwarePlugin() | ||
|
||
euphonium.register_plugin(hardware) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
class CSpotPlugin : Plugin | ||
def init() | ||
self.apply_default_values() | ||
self.name = "cspot" | ||
self.theme_color = "#1DB954" | ||
self.display_name = "Spotify Connect" | ||
self.type = "plugin" | ||
end | ||
|
||
def make_form(ctx, state) | ||
ctx.create_group('spotify', { 'label': 'General' }) | ||
|
||
ctx.text_field('receiverName', { | ||
'label': "Speaker's name", | ||
'default': "STRØM 1.0", | ||
'group': 'spotify' | ||
}) | ||
ctx.select_field('audioBitrate', { | ||
'label': "Audio bitrate", | ||
'default': "320", | ||
'values': ['320', '160', '96'], | ||
'group': 'spotify' | ||
}) | ||
ctx.checkbox_field('overrideAp', { | ||
'label': "Override access point address", | ||
'default': "true", | ||
'group': 'spotify' | ||
}) | ||
|
||
if state.find('overrideAp') != nil && state['overrideAp'] == 'true' | ||
ctx.text_field('apAddress', { | ||
'label': "Access point address", | ||
'default': "ap-gew1.spotify.com:4070", | ||
'group': 'spotify' | ||
}) | ||
end | ||
end | ||
|
||
def on_event(event, data) | ||
if event == EVENT_SET_PAUSE | ||
cspot_set_pause(data) | ||
end | ||
|
||
if event == EVENT_VOLUME_UPDATED | ||
#cspot_set_volume_remote(data) | ||
end | ||
end | ||
end | ||
|
||
euphonium.register_plugin(CSpotPlugin()) |