Go Down

Topic: Need help understanding this piece of code (ArduPlane) (Read 739 times) previous topic - next topic

dominicfhk

Feb 09, 2013, 05:24 am Last Edit: Feb 09, 2013, 05:27 am by dominicfhk Reason: 1
Hey guys. I am looking at the code used by the open source ardupilot
http://code.google.com/p/ardupilot-mega/downloads/detail?name=ArduPlane-2.68.zip&can=2&q=

And I am having problem understanding this piece of code. Under GCS_Mavlink...

#if CAMERA == ENABLED
   case MAVLINK_MSG_ID_DIGICAM_CONFIGURE:
   {
       g.camera.configure_msg(msg);
       break;
   }

   case MAVLINK_MSG_ID_DIGICAM_CONTROL:
   {
       g.camera.control_msg(msg);
       break;
   }
#endif // CAMERA == ENABLED

So for "g.camera.configure_msg(msg);",
the dot operator is for accessing a structure member. So "g" and "camera" is a structure name and "configure_msg(msg)" is a structure member? So I assume there exists a declaration somewhere stating that...

int 50; //or any integer
int msg[n];

struct xxx{
configure_msg(msg);
}

struct yyy{
structure xxx camera;
}

struct yyy g;

But I couldn't find anything like that in the code. Can anyone tell me what exactly does that piece of code do? I have never learned anything about C structure before. I was just looking at tutorial online... Thanks a lot!

johncc

Could be a struct or a class.  Either way, configure_msg() is a method "on" the object:
Code: [Select]

struct G {
  Camera camera;
};
struct Camera {
  void configure_msg(int msg){}
};
...

G g;
g.camera.configure_msg(msg);


HTH,
John

dominicfhk

Thanks for the response. Would you mind to explain what you mean by "a method "on" the object" please? Thanks!

johncc

"Object-oriented programming (OOP) is a programming paradigm that represents concepts as "objects" that have data fields (attributes that describe the object) and associated procedures known as methods. Objects, which are usually instances of classes, are used to interact with one another to design applications and computer programs.[1] [2]"  -- wiki

In c++, for you right now, a struct is basically the same as a class.

Cheers,
John

Nick Gammon

In AP_Camera.h:

Code: [Select]

/// @class Camera
/// @brief Object managing a Photo or video camera
class AP_Camera {

public:

...

    // MAVLink methods
    void            configure_msg(mavlink_message_t* msg);
    void            control_msg(mavlink_message_t* msg);


I didn't find "g" or "camera" but there are a lot of files to look through.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

Go Up