Ciao Memory,
nella 3rd io non sono riuscito a trovare una funzione decente che giri su tutti...
Che funzione hai usato nella 2nd?
Ti dico subito!
Praticamente ho usato la libreria bteng.lib...il problema era solo per l'header. Ma un tipo ha fatto il reverse engineering del lib (è facile) e ha fatto l'header

(link alla bteng.lib)
bteng.h#ifndef BT_ENG_HACK_H
#define BT_ENG_HACK_H
// link against BTENG.LIB copied from SDK 1.2
// these are headers that are just not included
// in the SDK, so I had to reverse engineer them
//C:\Symbian\tilion\group>"c:\Program Files\Borland\CBuilder6\Bin\expdump.exe"
// C:\Symbian\Series60_1_2_B\epoc32\release\winsb\udeb\BTENG.LIB
enum TBTDiscoverabilityMode { EBTDiscoverabilityMode0, EBTDiscoverabilityMode1 };
enum TBTSearchMode { EBTSearchMode0, EBTSearchMode1 };
class MBTMCMSettingsCB
{
};
//class CBTMCMSettings;
// class CBTMCMSettings
// {
// public:
// static CBTMCMSettings* NewLC(MBTMCMSettingsCB *x);
// static CBTMCMSettings* NewL(MBTMCMSettingsCB *x);
// void SetPowerStateL(TBool a, TBool b);
// void GetPowerStateL(TBool &a);
// TInt GetConnectionStatus(int &a);
// };
class CBTMCMSettings : public CBase {
public:
IMPORT_C static int GetAllSettings(int &, enum TBTDiscoverabilityMode &, enum TBTSearchMode &, class TDes16 &, int &);
IMPORT_C static int GetDiscoverabilityModeL(enum TBTDiscoverabilityMode &);
IMPORT_C static int GetLocalBDAddress(class TBTDevAddr &);
IMPORT_C static int GetLocalBTName(class TDes16 &);
IMPORT_C static int GetPowerStateL(int &);
IMPORT_C static int GetSearchModeL(enum TBTSearchMode &);
IMPORT_C static int IsLocalNameModified(int &);
IMPORT_C static class CBTMCMSettings * NewL(class MBTMCMSettingsCB *);
IMPORT_C static class CBTMCMSettings * NewLC(class MBTMCMSettingsCB *);
IMPORT_C int SetDefaultValuesL(void);
IMPORT_C int SetDiscoverabilityModeL(enum TBTDiscoverabilityMode, int);
IMPORT_C int SetLocalBTName(class TDesC16 const &);
IMPORT_C int SetPowerStateL(int, int);
IMPORT_C int SetSearchModeL(enum TBTSearchMode);
};
#endifE quindi la chiamo cosi ad esempio...
libreria pys60#include "Python.h"
#include "symbian_python_ext_util.h"
#include <w32std.h>
#include <e32base.h>
#include <bteng.h>
static PyObject* off(PyObject* /*self*/, PyObject * args)
{
TInt error;
CBTMCMSettings * btset=CBTMCMSettings::NewLC(NULL);
error=btset->SetPowerStateL(EFalse,EFalse);
CleanupStack::PopAndDestroy();
if (error)
{
return SPyErr_SetFromSymbianOSErr(error);
}
return Py_None;
}
static PyObject* on(PyObject* /*self*/, PyObject * args)
{
TInt error;
CBTMCMSettings * btset=CBTMCMSettings::NewLC(NULL);
error=btset->SetPowerStateL(ETrue,EFalse);
CleanupStack::PopAndDestroy();
if (error)
{
return SPyErr_SetFromSymbianOSErr(error);
}
return Py_None;
}
static PyObject* getmode(PyObject* /*self*/, PyObject * args)
{
TInt error;
TInt state;
CBTMCMSettings * btset=CBTMCMSettings::NewLC(NULL);
error=btset->GetPowerStateL(state);
CleanupStack::PopAndDestroy();
if (error)
{
return SPyErr_SetFromSymbianOSErr(error);
}
PyObject* state2 = Py_BuildValue("i", state);
return state2;
}
extern "C" {
static const PyMethodDef listdir_methods[] = {
{"off", (PyCFunction)off, METH_VARARGS, NULL},
{"on", (PyCFunction)on, METH_VARARGS, NULL},
{"getmode", (PyCFunction)getmode, METH_VARARGS, NULL},
{NULL,NULL}/* sentinel */
};
DL_EXPORT(void) initlistdir(void)
{
PyObject *m;
m = Py_InitModule("btutils", (PyMethodDef*)listdir_methods);
}
} /* extern "C" */
GLDEF_C TInt E32Dll(TDllReason)
{
return KErrNone;
}