#ifdef ARDUI_DEBUG_X86
using namespace std;
#endif
Bad idea. You should never drag the entire namespace in. Put in "using std::xxxx" statements only for those symbols that you actually use.
Why do your classes not have destructors? Yes, default destructors are generated, but they don't manage the dynamically allocated data of your class. So, potential memory leaks exist.
ArduiParamItem::ArduiParamItem(char *str , CB_ARDUI_COMMAND cb)
{
strcpy(strCmd,str);
cmd = cb;
strCmd is 6 elements long. What is
ArduiParamItem item("SomeNiceLongName", NULL);
going to do? Overflow your buffer, and mess up something else, that's what. Some error checking is in order.
Some explanation about how this functionality should be used would be useful.