From owner-freebsd-questions@freebsd.org Wed Dec 16 22:48:07 2015 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6E6D9A487D2 for ; Wed, 16 Dec 2015 22:48:07 +0000 (UTC) (envelope-from ike@michaeleichorn.com) Received: from mx1.eichornenterprises.com (mx1.eichornenterprises.com [104.236.13.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mx1.eichornenterprises.com", Issuer "StartCom Class 1 Primary Intermediate Server CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 0E2031277 for ; Wed, 16 Dec 2015 22:48:06 +0000 (UTC) (envelope-from ike@michaeleichorn.com) Received: from mail.eichornenterprises.com (cpe-184-59-147-149.neo.res.rr.com [184.59.147.149]) by mx1.eichornenterprises.com (OpenSMTPD) with ESMTP id d19f25b4; Wed, 16 Dec 2015 17:48:02 -0500 (EST) Received: by mail.eichornenterprises.com (OpenSMTPD) with ESMTPSA id 7471a12a TLS version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO; Wed, 16 Dec 2015 17:48:02 -0500 (EST) Message-ID: <1450306085.1103.45.camel@michaeleichorn.com> Subject: Re: Standardizing digital, analog control points in the kernel? From: "Michael B. Eichorn" To: "Brian McGovern (bmcgover)" , "freebsd-questions@freebsd.org" Date: Wed, 16 Dec 2015 17:48:05 -0500 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.18.2 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Dec 2015 22:48:07 -0000 On Wed, 2015-12-16 at 20:58 +0000, Brian McGovern (bmcgover) wrote: > All, >   This is a question that I'm sure could span multiple lists and > multiple perspectives; for example, there is probably significant > input to be had from -arm. However, I'm going to ask here to try to > get the biggest collection of feedback. > >   I've been working with a number of I/O capable devices for awhile - > Pis, Beaglebones, for example, but also a lot of the USB Velleman > boards, X-10, Insteon, etc. > >   I've been contemplating a project to consolidate the various > control points, with a certain amount of metadata, at the userland > level and provide a standardized interface - most likely through a > network socket via XML, some form of HTTP, a combination, or > something else entirely. The reason would be to sufficiently abstract > the various layers so that domain experts could focus on specific > areas - for example, device driver writers could focus on adding more > devices which provide control points without needing to provide > server or applications bits, UI writers and control applications can > worry about looking pretty and communicating through a language- > independent interface, and so forth. > >   The question I have is whether a.) Anyone is looking at doing > something similar, and b.) if anyone is looking at doing something > similar inside the kernel as a device driver, filesystem, or other > variation (e.g. I'm thinking of something like ucom, where the low- > level hardware drivers plug in to it to provide a generic user > interface on top)? > >      -B This is an interesting idea and I think that a unified method for handling I/O would be very useful. It sounds like you are mostly talking about maker, home automation, and internet-of-things type devices, but it might have applications for scientific data acquisition and industrial control as well. Also such a stack should support realtime computing. Interestingly it appears that RTLinux died in 2011 so this could be an advantage for FreeBSD in IoT and Maker devices. Realtime is, in my opinion as a mechanical engineer, essential for any system that might control an appliance/drone/robot, or for that matter data acquisition in general. That said, I do like the idea of separating the application logic and the gui out from the details of the individual devices being used.