@@ -40,9 +40,9 @@ namespace Plane
4040 ALL_CALL_REPLY = 8 // All Call Reply
4141 };
4242
43- class ADSB
43+ struct ADSB
4444 {
45- protected:
45+ int prev, next;
4646 std::time_t rxtime;
4747 MessageType type;
4848 TransmissionType transmission;
@@ -52,14 +52,13 @@ namespace Plane
5252 FLOAT32 groundspeed; // Speed over ground
5353 FLOAT32 track; // Track angle
5454 int vertrate; // Vertical rate
55- char callsign[8 ]; // Aircraft callsign
55+ char callsign[9 ]; // Aircraft callsign, nul terminated
5656 int squawk; // Mode A squawk code
5757 BoolType alert; // Squawk change flag
5858 BoolType emergency; // Emergency flag
5959 BoolType spi; // Ident flag
6060 BoolType onground; // Ground squat switch flag
6161
62- public:
6362 void Stamp (std::time_t t = (std::time_t )0L)
6463 {
6564 std::time (&rxtime);
@@ -83,7 +82,7 @@ namespace Plane
8382 vertrate = VERTRATE_UNDEFINED;
8483 squawk = SQUAWK_UNDEFINED;
8584 alert = emergency = spi = onground = BoolType::UNKNOWN;
86- std::memset ( callsign, ' @ ' , 8 ) ;
85+ callsign[ 8 ] = ' \0 ' ;
8786 }
8887
8988 // Getters
@@ -97,7 +96,7 @@ namespace Plane
9796 FLOAT32 getGroundSpeed () const { return groundspeed; }
9897 FLOAT32 getTrack () const { return track; }
9998 int getVertRate () const { return vertrate; }
100- std::string getCallsign () const { return std::string (callsign, 8 ); }
99+ std::string getCallsign () const { return std::string (callsign); }
101100 int getSquawk () const { return squawk; }
102101 BoolType getAlert () const { return alert; }
103102 BoolType getEmergency () const { return emergency; }
@@ -120,9 +119,17 @@ namespace Plane
120119 void setVertRate (int vr) { vertrate = vr; }
121120 void setCallsign (const std::string &c)
122121 {
123- std::memset (callsign, ' @' , 8 );
124- std::strncpy (callsign, c.c_str (), MIN (c.length (), sizeof (callsign)));
122+ for (int i = 0 ; i < 8 ; i++)
123+ {
124+ if (i < c.size () && c[i] != ' \0 ' && c[i] != ' @' )
125+ callsign[i] = c[i];
126+ else {
127+ callsign[i] = ' \0 ' ;
128+ break ;
129+ }
130+ }
125131 }
132+
126133 void setSquawk (int s) { squawk = s; }
127134 void setAlert (BoolType a) { alert = (BoolType)a; }
128135 void setEmergency (BoolType e) { emergency = (BoolType)e; }
0 commit comments