"Driver" or "Interface Object" - yes or no?

We are having the following debate:

I am trying to convince a vendor that the proper way to provide an interface to their embedded system (that hooks up to a PC using TCPIP) is to provide a software component on the PC (like a driver). For some reason, they are of the oppinion that just providing the syntax for the messages that go back and forth should be enough (i.e. the actual data that corresponeds to a particular message in an agreed format). I believe that it is better software engineering to provide an encapsulation and buffer layer in shape of a software component (such as a DLL etc.).

Am I right? Wrong? How do I convince them? Any litterature to refer to?

Thanks very much

Reply to
ElderUberGeek
Loading thread data ...

I disagree about a driver being a good idea. I'd much rather have the spect for the protocol. If they want to provide code, then I'd want library routines in ANSI standard C, but such code is often of limited usefulness.

I agree with them.

In addition to the protocol spec, a library would be OK (in source form). Providing a "DLL" for some particular version of some particular OS for some partcular language is a bad idea.

A device driver is a very bad idea unless there is absolutely no way to perform the desired functions in user-space.

It's a huge amount of work to write a device driver that uses TCP/IP to communicate with the device. The result is (in my experience) difficult to use, difficult to debug, and difficult to maintain. Avoid device drivers if at all possible.

I think a device driver is a really bad idea. I worked for years at a company that provided device drivers that communicated with the device via TCP/IP (there was simply no other way to do it). You really, really, don't want a device driver.

Tell them you won't buy the product unless it has the features you want. Buy the product from one of their competitors that provides what you want. Pay them to do what you want.

Literature?

--
Grant Edwards                   grante             Yow!  By MEER biz doo
                                  at               SCHOIN...
                               visi.com
Reply to
Grant Edwards

IMO, this is more subjective than black & white. To their credit, it sounds as if they are drawing the line instead of capitulating and extending into an area they don't feel they can be successful.

If they provide a software module, that gets them into the SDK business, which involves a lot more support / debugging of the client's unique software development environment. (Very different support skills, not to mention all the platform permuntations.)

However, providing just the messaging format is on the other end of the spectrum, unless the interface is trivially simple. It's foolhardy not to make it as easy as possible for the customer to absorb your product - the faster / easier it is, the quicker product sells and the lower the support costs.

It would be a reasonable middleground to provide reference code as an example, perhaps in both VB and VC++ (considering the target platform), which the client could confidently integrate and extend with little startup effort. This is code they've already written to develop / test / demo the product and cleaning it up to share as a reference driver shouldn't be too burdensome.

My $.02, Richard

p.s. - Posting the same message to multiple groups is considered bad form; it creates parallel conversations that don't benefit from each other. The preferred method is to "cross-post" - address the original message to a limited number (typically

Reply to
Richard H.

Hi Richard. Thanks for your reply. I understand your points and tend to agree. My question I guess is about the definition of the protocol. Am I correct to assume that a proper spec for a protocol is not only the messahe syntax but also the flow/sequence in which they happen? Where can I perhaps see an example of a proper spec?

Thanks

PS - Sorry about the multiple post and thanks for your explanation

Reply to
ElderUberGeek

Well, yes, of course a good interface spec would include all the details necessary. So, if flow / sequence are significant, it would need to be defined. I would point you to any of a myriad controller chips for documentation examples. Say, Asix AX88796L Ethernet controller or Atmel's AVR microcontroller line to name a couple. (These are hardware interfaces, but involve proper syntax, timing, and sequencing in areas.)

You will find in practice that the format/syntax and sequences are generally documented, but there are almost always subtle details omitted and must be learned from experience (e.g., timing-specific conditions, exception cases, etc.); this is less so with major manufacturers. This is where proven code (mfr's or open source) is very valuable in getting started.

If the interface is a simple request/response format and requests are not inter-dependent, then not much discussion of sequencing is needed. If you're implying they should get deeper and spec the TCP behavior of the interface, that's the benefit of using TCP - it's well-documented and standardized, and they are only obliged to disclose where they are not fully compliant (though this is rarely done in practice).

Richard

Reply to
Richard H.

=20=20I=20can't=20point=20to=20any=20literature,=20but=20I=20can=20offer=20my=20user,=20development, and=20product=20development=20experience.=20=20I've=20been=20on=20all=20sides=20of=20this debate=20from=20one=20time=20or=20another.

=20=20The=20first=20level=20of=20description=20should=20be=20the=20interface=20and=20protocols that=20the=20device=20has.=20=20In=20this=20case=20that=20is=20the=20TCP/IP=20protocols=20used to=20manage=20the=20device.=20=20Hopefully=20these=20are=20published=20so=20that=20users capable=20of=20development=20of=20TCP/IP=20applications=20could=20make=20use=20of=20the product.

=20=20This=20level=20must=20be=20documented=20for=20at=20least=20the=20device=20and=20operating system=20specific=20code=20to=20be=20developed.=20=20It=20generally=20takes=20very=20little to=20make=20this=20document=20readable=20by=20developers.=20=20Many=20companies=20also choose=20to=20leave=20out=20various=20details=20of=20their=20interface=20that=20only=20they would=20need=20access=20to.

=20=20This=20level=20of=20documentation=20gives=20any=20competant=20developer=20the=20ability to=20make=20use=20of=20the=20device=20with=20any=20other=20TCP/IP=20capable=20system,=20not just=20a=20Windows=20based=20community.=20=20Furthermore,=20it=20also=20allows=20developers to=20use=20the=20device=20in=20ways=20not=20thought=20of=20by=20the=20creators.

=20=20The=20creator=20may=20also=20choose=20to=20supply=20an=20interface=20for=20specific operating=20systems.=20=20That=20can=20be=20helpful=20where=20developers=20should=20not be=20needed=20to=20use=20the=20device.

=20=20This=20layer=20of=20abstraction=20can=20be=20a=20good=20or=20bad=20idea=20depending=20on=20 who=20is=20using=20the=20device.=20=20What=20if=20the=20operating=20system=20specific=20API doesn't=20support=20what=20a=20developer=20wants=20to=20do=20with=20the=20device?=20=20What about=20the=20times=20when=20the=20API=20isn't=20optimized=20to=20function=20adequately for=20a=20specific=20developers=20needs?=20=20Does=20the=20device=20creator=20actually=20 want=20to=20exclude=20users=20from=20operating=20systems=20that=20they=20do=20not=20have funding=20to=20supply=20support=20for?=20=20Does=20the=20creator=20or=20their=20third party=20API=20developer=20want=20to=20handle=20all=20the=20requests=20for=20improvements to=20the=20API?

=20=20In=20summary=20both=20approaches=20are=20feasible.=20=20The=20bare=20TCP/IP=20protocol should=20be=20documented=20regardless.=20=20Hopefully=20it=20is=20also=20available=20to those=20technically=20capable=20of=20using=20the=20device=20in=20this=20manner. Additional=20system=20specific=20APIs=20can=20be=20supplied=20where=20they=20add usefullness=20to=20the=20desired=20user=20base.

=20=20David

Reply to
David

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.