The (brief!) release notes for Firmware version V1_08_06 includes the following: "Added menu navigation support to serial protocol".
A bit of hacking this weekend revealed the following:
The four new commands added (apparently the ONLY new commands added to the protocol since V1_05_01) are:
MNU -- Enter MENU mode at top-level menu (same as pressing MENU button while not displaying a menu
MSB -- While in MENU mode, go BACK one level (same as pressing MENU while displaying a menu)
MSV -- While in MENU mode, go FORWARD one level (same as pressing [E] while displaying a menu)
MSI -- Return XML block representing current menu
Examples:
MNU while scanning to enter Menu mode. Now you'll be at the top menu
MSI returns the following:
MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI Name=" -- M E N U -- " Index="4293002112" MenuType="TypeSelect" Value="Set Scan Selection" Selected="0" >
<MenuItem Name="Set Scan Selection" Index="0" />
<MenuItem Name="Manage Full Database" Index="1" />
<MenuItem Name="Manage Favorites" Index="2" />
<MenuItem Name="Set Your Location" Index="3" />
<MenuItem Name="Select Service Types" Index="4" />
<MenuItem Name="Srch/CloCall Opt" Index="5" />
<MenuItem Name="Search for..." Index="6" />
<MenuItem Name="Close Call" Index="7" />
<MenuItem Name="Discovery" Index="9" />
<MenuItem Name="Priority Scan" Index="10" />
<MenuItem Name="WX Operation" Index="11" />
<MenuItem Name="Tone-Out for..." Index="12" />
<MenuItem Name="Display Options" Index="13" />
<MenuItem Name="Settings" Index="14" />
<Footer No="1" EOT="1"/>
</MSI>
At the same time, GSI returns the following:
GSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<ScannerInfo Mode="Menu tree" V_Screen="menu_selection">
<MenuSummary name=" -- M E N U -- " index="4293002112" />
<ViewDescription>
</ViewDescription>
</ScannerInfo>
You'l note that that the ANALYZE selection is omitted from the returned XML. You actually CAN navigate to it, but it's not returned in the XML block.
MSV,,8 will navigate to the ANALYZE menu, even though it's missing from the XML data.
While the ANAYLZE top menu is being displayed, MSI will return the following:
MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI MenuType="TypeError" >
<MenuErrorMsg Text="The scanner is in state that you can't remote control.
Please goto scan mode to remote control." ScanButton="1" />
<Footer No="1" EOT="1"/>
</MSI>
As before, you can ignore the MenuErrorMsg.Text and navigate directly if you "know" (by parsing the output of STS while the menu page is being displayed, for example) the index value of the selection you want. For example, if you want to navigate to "RF Power Plot" while your'e on the ANALYZE top menu you can get there with MSV,,2 (RF Power Plot is the third menu option -- starting at an index origin of 0, this makes the RF Power Plot selection Index==2.)
The output from STS while on the ANALYZE menu is:
STS,1111111111,Analyze ,________________________,System Status ,************************,EDACS/LTR LCN Finder ,,RF Power Plot ,, ,, ,, ,, ,, ,, ,,0,1,0,0,,,0,OFF,3
MSB,, will take you back one level in the menu hierarchy (equivalent to pressing the MENU button).
MNU while you're at any level will take you back to the top-level menu.
The syntax of "MSV,," and "MSB,," suggests each can take two parameters. As shown above, the second parameter for MSV is the selection index, as in "MSV,,indexID". It seems the first parameter might be the MenuID, but thus far I've not been able to navigate directly to sub-menus without navigating through the menus in between.
So...if you have the inclination to do so, you should be able to use this information to more cleanly navigate through the BCD436HPs menus within your code -- for example, displaying ALL menu options at once rather than just what's visible on the BCD-436 screen and selecting a menu option directly rather than having to scroll through the selections above/below it.
If you're writing code to control your BCD-436HP, please share YOUR discoveries and insights with the rest of us!
-rbi
A bit of hacking this weekend revealed the following:
The four new commands added (apparently the ONLY new commands added to the protocol since V1_05_01) are:
MNU -- Enter MENU mode at top-level menu (same as pressing MENU button while not displaying a menu
MSB -- While in MENU mode, go BACK one level (same as pressing MENU while displaying a menu)
MSV -- While in MENU mode, go FORWARD one level (same as pressing [E] while displaying a menu)
MSI -- Return XML block representing current menu
Examples:
MNU while scanning to enter Menu mode. Now you'll be at the top menu
MSI returns the following:
MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI Name=" -- M E N U -- " Index="4293002112" MenuType="TypeSelect" Value="Set Scan Selection" Selected="0" >
<MenuItem Name="Set Scan Selection" Index="0" />
<MenuItem Name="Manage Full Database" Index="1" />
<MenuItem Name="Manage Favorites" Index="2" />
<MenuItem Name="Set Your Location" Index="3" />
<MenuItem Name="Select Service Types" Index="4" />
<MenuItem Name="Srch/CloCall Opt" Index="5" />
<MenuItem Name="Search for..." Index="6" />
<MenuItem Name="Close Call" Index="7" />
<MenuItem Name="Discovery" Index="9" />
<MenuItem Name="Priority Scan" Index="10" />
<MenuItem Name="WX Operation" Index="11" />
<MenuItem Name="Tone-Out for..." Index="12" />
<MenuItem Name="Display Options" Index="13" />
<MenuItem Name="Settings" Index="14" />
<Footer No="1" EOT="1"/>
</MSI>
At the same time, GSI returns the following:
GSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<ScannerInfo Mode="Menu tree" V_Screen="menu_selection">
<MenuSummary name=" -- M E N U -- " index="4293002112" />
<ViewDescription>
</ViewDescription>
</ScannerInfo>
You'l note that that the ANALYZE selection is omitted from the returned XML. You actually CAN navigate to it, but it's not returned in the XML block.
MSV,,8 will navigate to the ANALYZE menu, even though it's missing from the XML data.
While the ANAYLZE top menu is being displayed, MSI will return the following:
MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI MenuType="TypeError" >
<MenuErrorMsg Text="The scanner is in state that you can't remote control.
Please goto scan mode to remote control." ScanButton="1" />
<Footer No="1" EOT="1"/>
</MSI>
As before, you can ignore the MenuErrorMsg.Text and navigate directly if you "know" (by parsing the output of STS while the menu page is being displayed, for example) the index value of the selection you want. For example, if you want to navigate to "RF Power Plot" while your'e on the ANALYZE top menu you can get there with MSV,,2 (RF Power Plot is the third menu option -- starting at an index origin of 0, this makes the RF Power Plot selection Index==2.)
The output from STS while on the ANALYZE menu is:
STS,1111111111,Analyze ,________________________,System Status ,************************,EDACS/LTR LCN Finder ,,RF Power Plot ,, ,, ,, ,, ,, ,, ,,0,1,0,0,,,0,OFF,3
MSB,, will take you back one level in the menu hierarchy (equivalent to pressing the MENU button).
MNU while you're at any level will take you back to the top-level menu.
The syntax of "MSV,," and "MSB,," suggests each can take two parameters. As shown above, the second parameter for MSV is the selection index, as in "MSV,,indexID". It seems the first parameter might be the MenuID, but thus far I've not been able to navigate directly to sub-menus without navigating through the menus in between.
So...if you have the inclination to do so, you should be able to use this information to more cleanly navigate through the BCD436HPs menus within your code -- for example, displaying ALL menu options at once rather than just what's visible on the BCD-436 screen and selecting a menu option directly rather than having to scroll through the selections above/below it.
If you're writing code to control your BCD-436HP, please share YOUR discoveries and insights with the rest of us!
-rbi