since the display is 16x2, i kind of think a tty device would be gumming up the works. no sense in cooking the output.

scrolling is done manually. the entire display of both lines has to be sent in every write. the samsung vfd panel itself has far more features than soundgraph (the manufacturer of the imon) has put into this (at least based on what their windows software does.. i'd kind of doubt that they are holding back features from their own software teams).

i've only witnessed six types of transactions in their software. vfd text downstream. bargraph downstream. set/display static standby text. set/display freerunning standby clock/date. knob/button upstream. remote control upstream. all upstream is interrupt. i have verified all funtions in small test programs.

bargraph is munged (i'm assuming that the bargraph is partially obfuscated by the fact that their display buffer seems to be only 16 bytes per line, when the samsung panel itself has 40 byte buffers for each 16 char line. line 1 left char is address 0 in the panel, and line 2 left char is address 40h, with 40 chars (28h) per line's display ram. i also suspect some intentional obfuscation involved in their bargraph scheme in a lame anti-reverse engineering attempt (their windows software always lags the music, and that's on an intel E8200, with large disk and 4 gigs of ram (3.9G addressable) the low-speed interface might also be a factor. personally, i'd do this at no less than 12mbit if i was the engineer...the chips are cheap enough.

there seems to also be no support for the panel's on/off command (although i'm willing to bet it's there). there is no apparent support for the clear screen function (soundgraph's software does this by writing spaces to the display in five packets, when the vfd display itself supports a one-byte command to do so). no cursor functions (the cursor line is only active in bargraph mode). no brightness control (the panel supports 4 brightness levels). the display's built-in scrolling only scrolls both lines left or right, not individual lines, so, i can see why they chose to not use that. the panel supports blinking text, but that is also unsupported.

some of the information that does not apply to my unit, i will derive from Alexander Popov's imon-0.1 driver which is not 8.x compat. he lists several other id's for enumeration, and has a quirk for some older versions that need a 6th fixed dummy packet for writing text to the display. the current generation drive-bay version mass-marketed by antec (veris elite) which i have doesn't require it, but apparently, his silverstone lc16 chassis does. he also didn't figure out the bargraph, knob/button, or clock/static standby display, his driver only displayed text, decoded the remote.

overall, the device is rather simplistic as packaged with the soundgraph controller board backing the panel. the samsung vfd used seems to be far more powerful than the soundgraph endpoint supports. again, i'm using their own software, sniffed, to determine the functionality and commands. the display is so simplistic, a tty interface would be overkill. just character devices in this, and due to the multiple functions, the write() interface will be via variable length typed packets (type, length, data), the read() interface envisioned will be similar if i implement buffering of knob input, or single bytes otherwise, one for each of the three active states.

anyhow.  time for bed.

nite.

Jim Bryant wrote:
it'll be a pair of character devices.

the imon vfd is oem'ed to virtually EVERY high-end vfd-equipped htpc case on the market, all such tend to have the remote control interface as well built into the unit. the difference exists with the knob/button, some have it, others don't. the knob/button uses interrupt packets like the remote, but a totally different kind of packet, and i don't see support for it in lirc, so, i'll probably integrate it into the vfd device as the only read, and leave the remote as a seperate 100% lirc device. if people want to tie the knob/button to the volume/mute function exclusively, they can do so outside of the lirc framework. imho, the knob/button has better use as a function selector associated with menus on the vfd, although it can be used for volume/mute with little modification to existing lirc-related code.

another possibility would be to use a function in the vfd driver to switch it between the vfd device for discrete use, or to switch it to the /dev/lirc device and have it link directly to the lirc codes for the remote for the volume up/down/mute buttons, with the capability to switch it back with another call to the /dev/vfd device. this is the direction i'm leaning. since the vfd panel, knob/button, and lirc-compat remote are all going to be in this driver, it's kind of a no-brainer. the option to use the knob/button for either should be left to the end-user/programmer. most people would rather use a remote control for volume/mute anyway.

although there is very rudimentary support in linux under LCDd for the imon vfd, i'm thinking about not going that route. the end product may not end up being lcdproc /dev/lcd compat. it has limitations i don't like, and it wouldn't take advantage of the features the imon has.

lirc compat is a goal of this project though. most of the work is done on that front, i just need to port that over from linux. the features of the imon remote control are well-supported in lirc. /dev/lirc will exist in my driver.

Hans Petter Selasky wrote:
On Thursday 26 August 2010 23:29:35 Jim Bryant wrote:
Actually, all of my test programs (for testing my reverse engineering
efforts) have been done in libusb-1.0.

I would actually like to write kernel-level drivers though for these.


Then you should look at existing drivers in /sys/dev/usb/xxx, which match your device class. What kind of API do you want to userspace? tty-device, character device?

--HPS


_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to