Auch mit C++ lassen sich im Automotive-Bereich effiziente Programme entwerfen
C++ in der Automotive-Software-Entwicklung
11. Oktober 2006, 10:58 Uhr |
Matthias Kessler, Oliver Müller und Gerd Schäfer
Fortsetzung des Artikels von
Teil 1
Listing 1.
class CANFrame { public: static const uint8 MAX_FRAME_LENGTH = 8; CANFrame(uint16 id); ~CANFrame(); uint16 getId() const; void setId(uint16 id); const uint8* getPayload() const; uint8 getLength() const; void setPayload( uint8* payload, uint16 length); protected: uint16 fId; uint8 fPayload[MAX_FRAME_LENGTH]; uint8 fLength; }; |
Die Klasse CANFrame ist zentraler Bestandteil des Frameworks und dient der Abstraktion der übertragenen Daten. |
void CANFrame::setPayload( const uint8* payload, uint8 length) { if (length <= MAX_FRAME_LENGTH) { memcpy(fPayload, payload, length); fLength = length; } } const uint8* CANFrame::getPayload() const { return fPayload; } |
Listing 2. Die Methoden setPayload() und getPayload() regeln den Zugriff auf die Klasse CANFrame, und gewährleisten dessen Konsistenz. |
class SpeedInidicator : public ICANFrameListener { public: virtual void frameReceived( const CANFrame& frame) { fVFrame = frame; //... } //... private: VelocityCANFrame fVFrame; }; class CruiseControl : public ICANFrameListener { //... }; |
Listing 3. Die Schnittstelle ICANFrameListener ermöglicht den Applikationen SpeedIndicator und CruiseControl Zugriff auf die Daten des CAN-Busses. |
- C++ in der Automotive-Software-Entwicklung
- Listing 1.
- Generische Programmierung
- Einschränkungen in der Embedded-Welt