' Network diagnostics test script Sub AdvanceLine(rect as Object, amount as Integer) rect.SetY(rect.GetY() + amount) End Sub Sub Geometry_Advance() m.left_rect.SetY(m.left_rect.GetY() + m.height + m.spacing) m.middle_rect.SetY(m.middle_rect.GetY() + m.height + m.spacing) m.right_rect.SetY(m.right_rect.GetY() + m.height + m.spacing) End Sub Function Geometry_CreateWidgetTriplet(name as String) w = {} w.label = CreateObject("roTextWidget", m.left_rect, 1, 2, { Alignment: 0}) w.result = CreateObject("roTextWidget", m.middle_rect, 1, 2, { Alignment: 0}) w.info = CreateObject("roTextWidget", m.right_rect, 1, 2, { Alignment: 0}) w.name = name w.result.SetBackgroundColor(&h7f202020) w.info.SetBackgroundColor(&h7f202020) w.label.PushString(name) w.result.PushString("") w.info.PushString("") border = m.right_rect.GetHeight() / 6 r = CreateObject("roRectangle", border, border, m.right_rect.GetWidth() - border * 2, m.right_rect.GetHeight() - border * 2) w.info.SetSafeTextRegion(r) m.widgets.Push(w.label) m.widgets.Push(w.result) m.widgets.Push(w.info) m.Advance() return w End Function Function Geometry_CreateTitle(text as string) title = CreateObject("roTextWidget", m.title_rect, 1, 2, { Alignment: 1}) title.PushString(text) m.widgets.Push(title) return title End Function Function Geometry_CreatePrompt() m.Advance() rect = CreateObject("roRectangle", m.left_rect.GetX(), m.left_rect.GetY(), m.left_rect.GetWidth() + m.right_rect.GetWidth(), m.left_rect.GetHeight() * 0.75) prompt = CreateObject("roTextWidget", rect, 1, 2, { Alignment: 1}) m.widgets.Push(prompt) return prompt End Function Sub Geometry_ShowAll() for each widget in m.widgets widget.Show() next widget End Sub Function CreateGeometry() g = {} v = CreateObject("roVideoMode") lines = 3 left = v.GetSafeX() + v.GetSafeWidth() / 16 width = v.GetSafeWidth() - left * 2 left_width = width / 6 middle_width = width / 12 g.height = v.GetSafeHeight() / 20 g.spacing = g.height / 2 top = v.GetSafeY() + (v.GetSafeHeight() - g.height * lines - g.spacing * (lines - 1)) / 2 g.left_rect = CreateObject("roRectangle", left, top, left_width, g.height) g.middle_rect = CreateObject("roRectangle", left + left_width, top, middle_width, g.height) g.right_rect = CreateObject("roRectangle", left + left_width + middle_width, top, width - left_width - middle_width, g.height) g.title_rect = CreateObject("roRectangle", left, top - g.height * 2, width, g.height * 1.25) g.widgets = CreateObject("roArray", 0, true) g.Advance = Geometry_Advance g.CreateWidgetTriplet = Geometry_CreateWidgetTriplet g.CreateTitle = Geometry_CreateTitle g.ShowAll = Geometry_ShowAll g.CreatePrompt = Geometry_CreatePrompt return g End Function Function CreateWidgets() left_alignment = { Alignment: 0 } centre_alignment = { Alignment: 1 } right_alignment = { Alignment: 0 } geometry = CreateGeometry() widgets = {} widgets.title = geometry.CreateTitle("Network Diagnostics") widgets.ethernet = geometry.CreateWidgetTriplet("Ethernet") widgets.wifi = geometry.CreateWidgetTriplet("WiFi") widgets.internet = geometry.CreateWidgetTriplet("Internet") widgets.prompt = geometry.CreatePrompt() geometry.ShowAll() return widgets End Function Sub FillWidgets(widgets as Object, result as String, info as String) if result <> "FAIL" then widgets.result.SetForegroundColor(&hff00) widgets.result.Clear() widgets.info.Clear() widgets.result.PushString(result) else widgets.result.SetForegroundColor(&hff0000) widgets.result.Clear() widgets.info.Clear() widgets.result.PushString(result) widgets.info.PushString(info) end if End Sub Sub ReportToWidgets(widgets as Object, result as Object) if result.ok then FillWidgets(widgets, "OK", "") else FillWidgets(widgets, "FAIL", result.diagnosis) print widgets.name; " log:" for each line in result.log print " "; line next line print end if End Sub Sub ClearWidgets(widgets as Object) widgets.ethernet.result.Clear() widgets.ethernet.info.Clear() widgets.ethernet.result.SetForegroundColor(&hffffff) widgets.wifi.result.Clear() widgets.wifi.info.Clear() widgets.wifi.result.SetForegroundColor(&hffffff) widgets.internet.result.Clear() widgets.internet.info.Clear() widgets.internet.result.SetForegroundColor(&hffffff) End Sub Sub SetWidgetRunning(widget as Object) widget.result.Clear() widget.result.PushString("...") End Sub Sub RunTests(widgets as Object) ClearWidgets(widgets) SetWidgetRunning(widgets.ethernet) if0 = CreateObject("roNetworkConfiguration", 0) if0result = if0.TestInterface() ReportToWidgets(widgets.ethernet, if0result) SetWidgetRunning(widgets.wifi) if1 = CreateObject("roNetworkConfiguration", 1) if if1 = invalid then FillWidgets(widgets.wifi, "N/A", "") else if1result = if1.TestInterface() ReportToWidgets(widgets.wifi, if1result) end if SetWidgetRunning(widgets.internet) net_result = if0.TestInternetConnectivity() ReportToWidgets(widgets.internet, net_result) End Sub Sub Main() widgets = CreateWidgets() ' This will disable the reset button for the rest of the session ' so we don't do it by default. exit_on_reset = false mp = CreateObject("roMessagePort") control = CreateObject("roControlPort", "brightsign") if exit_on_reset then control.EnableInput(11) end if while true widgets.prompt.Hide() RunTests(widgets) control.SetPort(mp) widgets.prompt.PushString("Press DIAG button to repeat test") widgets.prompt.Show() ev = mp.WaitMessage(0) if type(ev) = "roControlDown" then if ev.GetInt() = 11 then end end if end if control.SetPort(invalid) end while End Sub