= HAL code design = This is a listing and description of the HAL design JaCaVi is using to give control information to and get sensor information from the hardware. == package de.jacavi.hal == * '''ConnectorConfigurationManager''' Holds and manages several SlotCarSystemConnectors. * '''ConnectorFactory''' Factory Interface includes method declarations to create the several SlotCarSystemConnectors * '''FeedbackSignal''' The feedback signal contains sensor (sensor detection, Gforce) information given from the hardware back over the FeedbackConnectors * '''Gforce''' Consits of x,y acceleration given back from the hardware (bluerider) * '''SlotCarSystemConnector''' Consits of a SlotCarSystemDriveConnector and a SlotCarFeedbackConnector and some members to give the ConnectorConfigurationManager the opportunity to manage SlotCarSystemConnector instances. An instance lets you control one (technology) specific car and get its feedback. * '''SlotCarFeedbackConnector''' Implemented by an specific FeedbackConnectorAdapter it gives the interface to poll the latest FeedbackSignal from the Hardware * '''SlotCarSystemDriveConnector''' Implemented by an specific FeedbackDriveConnectorAdapter it gives the functionality to control a car on the hardware * '''SlotCarSpeedAdjuster''' In fact we get a CarController (speed) signal from devices or driving agent in range of 0-100 and we have several speed ranges on the hardware (0-15 lib42; 0-255 bluerider; 0-? analogue) we have to adjust the signal before we give it to the hardware or get it from the hardware. This is what the SlotCarSpeedAdjuster does. * '''SlotCarSystemConnectorFactory''' implements the ConnectorFactory for creation of (technology) specific SlotCarSystemConnectors == package de.jacavi.hal.lib42 == * '''NativeLib42''' Singelton jni interface to access the underlying c library (Clib42) for 42 digital car control support * '''NativeCsdLib''' Singelton jni interface to access the underlying c library (CsdLib) fro 42 digital car sensor detection * '''Lib42DriveConnector''' lib42 specified interface extends from SlotCarSystemDriveConnector * '''Lib42FeedbackConnector''' lib42 specified interface extends from SlotCarFeedbackConnector * '''Lib42DriveConnectorAdapter''' implements Lib42Drive Connector. The car connector for one car (specified by a carID) to control a car on the digital course. Maps conrol functionality on NativeLib42 instance * '''Lib42FeedbackConnectorAdapter''' implements Lib42FeedbackConnector. Gets and holds the feedback from one digital car (specified by a carID). A Lib42FeedbackConnectorAdapter must be subscribed to the Lib42FeedbackManager to get its feedback from NativeCsdLib. * '''Lib42FeedbackManager''' Distributes digital sensor feedback to the subscribed Lib43FeedbackConnectorAdapters. Every subscribed Adapter will only get his feedback specified by carID. === 42 c projects === * '''Clib42''' This shared library supports to control the digital carrera course (hardware) over the 42 Blackbox. To control the hardware it's accessing /dev/ttyS1 serial device. -> minicom must be started on /dev/ttyS1 to activate the serial interface. Jacavi is using this library by native calls. * '''CsdLib''' This library is also part of Clib42. It supports the sensor detection on the digital carrera course over the 42 Blackbox. In feasibility study of the 42 protocol group it was more efficient to integrate both, drive control and sensor detection, in one library. Now the design of jacavi uses a more modular concept so we decided to have an extra shared library to achieve the jacavi sensordetection interface. It uses /dev/ttyS0 serial interface witch has to be started before use with minicom. == package de.jacavi.hal.bluerider == == package de.jacavi.hal.analogue == == package de.jacavi.hal.simulation ==