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
Diesen Artikel anhören

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.


  1. C++ in der Automotive-Software-Entwicklung
  2. Listing 1.
  3. Generische Programmierung
  4. Einschränkungen in der Embedded-Welt

Jetzt kostenfreie Newsletter bestellen!