Updated firmware header model name transformer to default to OG plus

Provides a slight upgrade from OG (png, 1-bit) to OG (plus, 2-bit) and better default. This also fixes the XTEINK_X4 model mapping which works properly now.

Milestone: minor
This commit is contained in:
Brooke Kuhlmann
2026-03-21 11:32:42 -06:00
parent 7646f39471
commit 45d54d4036
4 changed files with 17 additions and 17 deletions
@@ -15,17 +15,17 @@ module Terminus
include Initable[
key: :HTTP_MODEL,
map: {
"og" => "og_png",
"og" => "og_plus",
"reTerminal E1001" => "seeed_e1001",
"reTerminal E1002" => "seeed_e1002",
"seeed_esp32c3" => "seeed_e1001",
"seeed_esp32s3" => "seeed_e1002",
"waveshare" => "waveshare_4_26",
"x" => "v2",
"xiao_epaper_display" => "og_png",
"XTEINK_X4" => "og_png"
"xiao_epaper_display" => "og_plus",
"XTEINK_X4" => "xteink_x4"
},
fallback: "og_png"
fallback: "og_plus"
]
include Dry::Monads[:result]
@@ -38,7 +38,7 @@ RSpec.describe Terminus::Aspects::Firmware::Headers::Parser do
host: "https://localhost",
user_agent: "ESP32HTTPClient",
mac_address: "A1:B2:C3:D4:E5:F6",
model_name: "og_png",
model_name: "og_plus",
api_key: "abc123",
refresh_rate: 25,
battery: 4.74,
@@ -10,7 +10,7 @@ RSpec.describe Terminus::Aspects::Firmware::Headers::Transformers::ModelName do
describe "#call" do
it "transforms TRMNL OG" do
headers = {HTTP_MODEL: "og"}
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_png")
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_plus")
end
it "transforms reTerminal E1001" do
@@ -45,25 +45,25 @@ RSpec.describe Terminus::Aspects::Firmware::Headers::Transformers::ModelName do
it "transforms XIAO ePaper Display" do
headers = {HTTP_MODEL: "xiao_epaper_display"}
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_png")
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_plus")
end
it "transforms XTEINK X4" do
headers = {HTTP_MODEL: "XTEINK_X4"}
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_png")
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "xteink_x4")
end
context "with unknown name" do
let(:headers) { {HTTP_MODEL: :bogus} }
it "answers fallback name when name is unknown" do
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_png")
it "answers fallback when name is unknown" do
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_plus")
end
it "logs debug message" do
pattern = /
DEBUG.+Unknown\sname\swhen\stransforming\sHTTP_MODEL\sheader:\s:bogus\.\s
Using\sfallback:\sog_png\.
Using\sfallback:\sog_plus\.
/x
transformer.call headers
@@ -76,13 +76,13 @@ RSpec.describe Terminus::Aspects::Firmware::Headers::Transformers::ModelName do
let(:headers) { {HTTP_MODEL: ""} }
it "answers fallback name when name is unknown" do
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_png")
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_plus")
end
it "logs debug message" do
pattern = /
DEBUG.+Unknown\sname\swhen\stransforming\sHTTP_MODEL\sheader:\s\\"\\"\.\s
Using\sfallback:\sog_png\.
Using\sfallback:\sog_plus\.
/x
transformer.call headers
@@ -95,13 +95,13 @@ RSpec.describe Terminus::Aspects::Firmware::Headers::Transformers::ModelName do
let(:headers) { {HTTP_MODEL: nil} }
it "answers fallback name when name is unknown" do
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_png")
expect(transformer.call(headers)).to be_success(HTTP_MODEL: "og_plus")
end
it "logs debug message" do
pattern = /
DEBUG.+Unknown\sname\swhen\stransforming\sHTTP_MODEL\sheader:\snil\.\s
Using\sfallback:\sog_png\.
Using\sfallback:\sog_plus\.
/x
transformer.call headers
+2 -2
View File
@@ -4,10 +4,10 @@ require "hanami_helper"
RSpec.describe "/api/setup", :db do
let(:device) { Factory[:device, model_id: model.id] }
let(:model) { Factory[:model, name: "og_png"] }
let(:model) { Factory[:model, name: "og_plus"] }
let :headers do
{"HTTP_FW_VERSION" => "1.2.3", "HTTP_ID" => "A1:B2:C3:D4:E5:F6", "HTTP_MODEL" => "og_png"}
{"HTTP_FW_VERSION" => "1.2.3", "HTTP_ID" => "A1:B2:C3:D4:E5:F6", "HTTP_MODEL" => "og"}
end
it "answers new device when device doesn't exist" do