A problem with wip_TCPClientCreate

Hi!
I have some troubles with wip plugin. I need to add GPRS support to my embedded application. I added WIP Plugin Package at the project properties page and wrote some code to open GPRS bearer.
Everything was fine until I added a call to wip_TCPClientCreate. Open AT application fails to start when call to wip_TCPClientCreate is somewhere in the code. The function is only compiled and linked, not even called. Because it’s quite difficult to call it when my application doesn’t even start =(

AT+WOPEN=7 gives me error code #17, which means “bad priority value;
At least one task priority value is incorrect (not unique or too high value w.r.t.,the number
of tasks)”.
It’s very strange because there is only one entry in my task table.

// Application tasks declaration table
const adl_InitTasks_t adl_InitTasks [] =
{
        { entry_point,  32768, "main", 1 },
        { 0, 0, 0, 0 }
};

I don’t know if this can be a reason, but I couldn’t include wip.h file. It gave me compilation errors.

Description	Resource	Path	Location	Type
changes meaning of 'ascii' from 'typedef char ascii' (when compiling null)	firmware		line 106, external location: C:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.os.model.6.34.0.201007281407_6.34.0.201007281407\resources\ADL\basic\wm_types.h	C/C++ Problem
changes meaning of 's32' from 'typedef int32_t s32' (when compiling null)	firmware		line 43, external location: C:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.os.model.6.34.0.201007281407_6.34.0.201007281407\resources\ADL\basic\wm_types.h	C/C++ Problem
changes meaning of 'u32' from 'typedef uint32_t u32' (when compiling null)	firmware		line 42, external location: C:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.os.model.6.34.0.201007281407_6.34.0.201007281407\resources\ADL\basic\wm_types.h	C/C++ Problem
declaration of 'ascii* wip_fileInfo_t::wip_fileInfo_entry_t::ascii' (when compiling null)	firmware		line 77, external location: C:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.plugin.model.WIP.5.40.0.201007290812_5.40.0.201007290812\resources\WIP\itf\wip_file.h	C/C++ Problem
declaration of 's32 wip_fileInfo_t::wip_fileInfo_entry_t::s32' (when compiling null)	firmware		line 76, external location: C:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.plugin.model.WIP.5.40.0.201007290812_5.40.0.201007290812\resources\WIP\itf\wip_file.h	C/C++ Problem
declaration of 'u32 wip_fileInfo_t::wip_fileInfo_entry_t::u32' (when compiling null)	firmware		line 76, external location: C:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.plugin.model.WIP.5.40.0.201007290812_5.40.0.201007290812\resources\WIP\itf\wip_file.h	C/C++ Problem

So I included only files that was really needed to compile source code.

#include "wip_net.h"
#include "wip_inet.h"
#include "wip_channel.h"
#include "wip_tcp.h"
#include "wip_bearer.h"

App code is written in C++. Please tell me why my application fails to start when there are calls to wip_TCPClientCreate. I really need some help. Thanks.

https://forum.sierrawireless.com/t/build-errors-when-adding-wip-to-project/4806/4

Thank’s awneil but I still get 17 error code even with wip_file.h fixed. What is wrong with the priority level? I can’t figure out what value should I put in the adl_InitTasks table =(

OK, the problem is solved. Application fails to start only if built with ARM EABI GCC Toolchain. ARM ELF GCC works fine.

What “error codes”, exactly, did you get?

No, the problem is not fixed - you have just happened to avoid it (for now)…

This must mean:

  • There is still a “latent” bug in your code, waiting to bite you…
  • There is some problem in the SiWi suite related to ARM EABI GCC
  • Both of the above!

Addendum:

Just remembered that you’re using C++

You do need to remember that C++ is still a minority interest in Open-AT development - so it could be that SiWi have just not yet got around to (fully) supporting C++ for ARM EABI GCC…

I suppose that sierra wireless just did not properly tested EABI for C++. Even sample applications fail to start to when rewritten in C++. I can not rewrite all my sources in C totally - there is way to much code. So I have to be satisfied with this “solution”, there is nothing else that I can do.

at+wopen=7
+WOPEN: 7,17