[PLUG-Devel] Connect wrapper in c (was OT: C programmers....)
James Finstrom
jfinstrom at rhinoequipment.com
Sun Jun 21 18:17:37 MST 2009
Well I kept getting seg faults frankly cause I didn't understand.
Probably because an answer is only as good as the question. Anyhow
after a little playing it all made sense and I got it working. Thanks
for the help...
On 6/19/09, Joseph Sinclair <plug-devel at stcaz.net> wrote:
> I sent this originally from the wrong address, so I'm resending it in case
> the server rejects the other one.
>
> That's good advice.
> The second approach is definitely better, here's a snippet for James (using
> C, if using C++ change to an object and use a class member variable, more
> complex but also safer and easier to extend later)
> that does what Scott suggests:
>
> void connect(g_wiimote* wiimote_handle)
> {
> // do stuff to connect to the wiimote here.
> }
>
> int main(int argc, char** argv)
> {
> g_wiimote wiimote_handle; // stack allocation much safer than heap and
> malloc.
> connect(&wiimote_handle); // connect the handle and init the library here.
> // call another function to do stuff here, pass in the handle as above,
> don't forget the &.
> disconnect(&wiimote_handle); // cleanup the handle and release resources
> here.
> return 0; // always return a value from main, 0 == success.
> }
>
> Scott Harris wrote:
>> You could do that in several ways:
>>
>> 1) make the g_wiimote object global to the methods:
>>
>> /* static makes the handle file scope so it will not be visible outside
>> of this file */
>> static g_wiimote handle;
>> connect(){ connect to wiimote }
>> main(){ call connect(), perform actions on that handle}
>>
>> 2) or even better pass in the address of the handle and use it:
>>
>> connect(g_wiimote* handle) { connect to wiimote using *handle }
>> main() { g_wiimote handle; call connect(&handle); perform actions on
>> handle}
>>
>> // if you are actully using C++ instead of C then you could pass by
>> reference (instead of by pointer).
>>
>> Regards,
>> Scott
>>
>> James Finstrom wrote:
>>> Greetings,
>>>
>>> The original email is below. but I would like to better explain what I
>>> want and I am a C newb so my terminology can be assumed incorrect...
>>>
>>> I have a program I am putting together that basicly connects the
>>> gphoto library to the cwiid library. I am currently connecting the
>>> wiimote in main(). What I want to do is move the connection of the
>>> wiimote out of main but still refer to the handle in main. So right
>>> now in main i connect to the wiimote and it creates g_wiimote. I then
>>> basicly read/write to g_wiimote. What I want to do is move that block
>>> of code that does the connect out of main to a function
>>> do_connect_wiimote() which will exicute that block of code and return
>>> g_wiimote to main so I can read/write to it.
>>>
>>> Thanks in advance for not bashing the newb :)
>>>
>>>
>>> Original users email:
>>> Greetings all,
>>>
>>> I am writing app that allows me to control my canon SLR with my
>>> wiimote. I am trying to figure out how to call a function in main that
>>> generats a handle then returns the handle to main
>>>
>>>
>>> Concept:
>>>
>>> connect(){ connect to wiimote and return handle foo}
>>>
>>> main(){ call connect(), get handle, perform actions on that handle}
>>>
>>>
>>> James Finstrom
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> PLUG-devel mailing list - PLUG-devel at lists.PLUG.phoenix.az.us
>>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-devel
>>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> PLUG-devel mailing list - PLUG-devel at lists.PLUG.phoenix.az.us
>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-devel
>
>
--
James Finstrom
Rhino Equipment Corp.
http://rhinoequipment.com ~ http://postug.com
Phone: 1-877-RHINO-T1 ~ FAX: +1 (480) 961-1826
Twitter: http://twitter.com/rhinoequipment
IP: guest at asterisk.rhinoequipment.com
More information about the PLUG-devel
mailing list