Close

Software Update

A project log for R2Desk2

R2D2 themed Desk companion that provides updates from various internet sources.

cognismithCognismith 04/29/2014 at 07:120 Comments

The application is still console based at this stage, and whilst most of the code is complete, there are a still a few things left to finish before we can call it entirely functional. 

I have broken the development down into relevant modules, have developed them as below. 

Once I have had a chance to clean up the code, I will provide a link to a github repo.

Serial Comms: Connect to, send structured packets to, and receive responses from the hardware is completed. 

A packet structure class was defined that allows for easily creating correctly formed messages to send to the hardware A small wrapper class that uses the Microsoft serial port library takes care of sending and receiving messages. providing a method to send and wait for a response, or send and provide a call-back for later processing of response. serial receive occurring in a separate thread.

Serial Messages: Create all required message types has been completed. 

A base class that defines how messages are formed and responded to. Also providing base functionality for xmlSerialisation for saving configuration. 

Each message type that is sent to the hardware implements the base class, overriding the data component of the message and adjusts its parameters to suit.

Plugin framework: Allow alerts to be pulled from any source is completed. 

Using .net MEF, loading a folder full of dll's was actually quite a straightforward task. 

An interface is defined requiring: 

Configuration storage: Reading and writing configuration data to xml has been 70% completed. 

A class storing all of the applications configuration was created. 

this stores:

Using xmlSerialisation, the above structure is read and written to/from an xml file. The functionality to do the serialisation was completed, however only half of the rest of the code was modified to be correctly serialised.

Plugins: very little completion. A pop3 plugin was written, but not tested or completed.

Glue: Indeterminate. 

The above code was unit tested to as great an extent as was possible.

A basic routine was written to perform serial initialisation, load config and begin polling for updates. a lot of error handling and tweaking is required before I would call this complete.

Discussions