Пример #1
0
// test code
static PyObject* meth_tick_count(obj_Session* self, PyObject* /*args*/)
{
  TUint tickCount;
  TInt errCode = self->iSession.TickCount(tickCount);
  if (errCode) {
    return SPyErr_SetFromSymbianOSErr(errCode);
  }
  return Py_BuildValue("i", static_cast<TInt>(tickCount));
}
Пример #2
0
// Wraps DiscoverDevices() to provide a Python method interface.
// Arguments:
//  - boolean value of whether to perform name lookup 
//
// Returns list of (address, name, (service,major,minor)) tuples detailing the
// found devices.
static PyObject* LightBlue_DiscoverDevices(PyObject* self, PyObject* args)
{
    bool lookupNames;
    
    if (!PyArg_ParseTuple(args, "b", &lookupNames))
        return NULL;

    // run the discovery
    TDeviceDataList devDataList;
    TInt err = DiscoverDevices(&devDataList, lookupNames);
    if (err) 
        return SPyErr_SetFromSymbianOSErr(err);
    
    // put the results into a python list
    TInt i;
    TDeviceData *devData;
    TBuf8<6*2+5> addrString;
    
    PyObject *addrList = PyList_New(0);    // python list to hold results
    for( i=0; i<devDataList.Count(); i++ )
    {        
        devData = devDataList[i];
        
        // convert address to string
        DevAddressToString(devData->iDeviceAddr, addrString);
        
        PyObject *devValues;
        
        if (lookupNames) {
            THostName name = devData->iDeviceName;
            
            devValues = Py_BuildValue("(s#u#(iii))", 
                addrString.Ptr(), addrString.Length(),      // s# - address
                name.Ptr(), name.Length(),                  // u# - name
                devData->iServiceClass,                     // i  - service class
                devData->iMajorClass,                       // i  - major class
                devData->iMinorClass                        // i  - minor class
                );        
        } else {
            devValues = Py_BuildValue("(s#O(iii))", 
                addrString.Ptr(), addrString.Length(),      // s# - address
                Py_None,
                devData->iServiceClass,                     // i  - service class
                devData->iMajorClass,                       // i  - major class
                devData->iMinorClass                        // i  - minor class
                ); 
        }
        
        // add tuple to list
        PyList_Append(addrList, devValues);
    }    
    
    devDataList.ResetAndDestroy();
        
    return addrList;
}
Пример #3
0
static PyObject *_fn__pybtswitch__get_power_state(PyObject *aPyMod, PyObject *)
{
  CBTMCMSettings* settings = NULL;

  // The NewL takes an optional callback argument.
  TRAPD(error, settings = CBTMCMSettings::NewL());
  if ((error != KErrNone)) {
    return SPyErr_SetFromSymbianOSErr(error);
  }

  TBool powerState;
  error = settings->GetPowerState(powerState);
  delete settings;

  if ((error != KErrNone)) {
    return SPyErr_SetFromSymbianOSErr(error);
  }
  
  return Py_BuildValue("i", powerState ? 1 : 0);
}
Пример #4
0
// Wraps GetLocalName() to provide a Python method interface.
// Takes no arguments.
//
// Returns the local device name as a unicode python string.
static PyObject* LightBlue_GetLocalName(PyObject* self, PyObject* args) 
{
    TBTDeviceName deviceName;
    
    if (!PyArg_ParseTuple(args, ""))
        return NULL;
    
    TInt err = GetLocalName(deviceName);
    if (err) 
        return SPyErr_SetFromSymbianOSErr(err);
        
    return Py_BuildValue("u#", deviceName.Ptr(), deviceName.Length());
}
Пример #5
0
// Wraps GetLocalDeviceClass() to provide a Python method interface.
// Takes no arguments.
//
// Returns the local device class (an integer).
static PyObject* LightBlue_GetLocalDeviceClass(PyObject* self, PyObject* args) 
{
    //TDeviceData aDeviceData;
    TBTDeviceClass aDeviceClass;
    
    if (!PyArg_ParseTuple(args, ""))
        return NULL;
    
    TInt err = GetLocalDeviceClass(aDeviceClass);
    if (err) 
        return SPyErr_SetFromSymbianOSErr(err);
        
    return Py_BuildValue("i", aDeviceClass.DeviceClass());
}
Пример #6
0
static PyObject *_fn__pybtswitch__set_power_state(PyObject *aPyMod, PyObject *aPyArgs)
{
  int intPowerState;
  if (!PyArg_ParseTuple(aPyArgs, "i", &intPowerState))
    {
      return NULL;
    }
  TBool powerState = (intPowerState != EFalse);

  CBTMCMSettings* settings = NULL;
  TRAPD(error, settings = CBTMCMSettings::NewL());
  if ((error != KErrNone)) {
    return SPyErr_SetFromSymbianOSErr(error);
  }

  error = settings->SetPowerState(powerState);
  delete settings;
  
  if ((error != KErrNone)) {
    return SPyErr_SetFromSymbianOSErr(error);
  }

  RETURN_NO_VALUE;
}
Пример #7
0
PyObject* new_Session(PyObject* /*self*/, PyObject* /*args*/)
{
  PyTypeObject* typeObject = reinterpret_cast<PyTypeObject*>(SPyGetGlobalString(__MODULE_NAME__ ".Session"));
  obj_Session* self = PyObject_New(obj_Session, typeObject);
  if (self == NULL)
      return NULL;

  TInt errCode = self->iSession.Connect();
  self->iSessionOpen = (errCode == KErrNone);
  if (errCode) {
    PyObject_Del(self);
    return SPyErr_SetFromSymbianOSErr(errCode);
  }

  return reinterpret_cast<PyObject*>(self);
}
Пример #8
0
// Wraps GetLocalAddress() to provide a Python method interface.
// Takes no arguments.
//
// Returns local device address as Python string.
static PyObject* LightBlue_GetLocalAddress(PyObject* self, PyObject* args) 
{
    TBTDevAddr addr;
    TBuf8<6*2+5> addrString;
    
    if (!PyArg_ParseTuple(args, ""))
        return NULL;    
    
    TInt err = GetLocalAddress(addr);
    if (err) 
        return SPyErr_SetFromSymbianOSErr(err);
        
    DevAddressToString(addr, addrString);
    
    return Py_BuildValue("s#", addrString.Ptr(), addrString.Length());
}
Пример #9
0
// test code
static PyObject* meth_des16_len(obj_Session* self, PyObject* args)
{
  char* b;
  int l;
  if (!PyArg_ParseTuple(args, "u#", &b, &l))
  {
    return NULL;
  }
  TPtrC text((TUint16*)b, l);

  TInt desLen = 0;
  TInt errCode = self->iSession.TryEval(text, desLen);
  if (errCode) {
    return SPyErr_SetFromSymbianOSErr(errCode);
  }
  return Py_BuildValue("i", static_cast<TInt>(desLen));
}
Пример #10
0
static PyObject* getVideosPath(PyObject* /*self*/, PyObject* args)
	{
	Cpyfileselect* obj = Cpyfileselect::NewL();
	const char* res;
	TRAPD( err, res = obj->VideosPath());
	PyObject* result;

	if (err != KErrNone)
		{
		result = SPyErr_SetFromSymbianOSErr(err);
		}
	else
		{
		result = Py_BuildValue("s", res);
		}
	delete obj;
	return result;
	}
Пример #11
0
static PyObject* meth_eval_get_result(obj_Session* self, PyObject* args)
{
  char* b;
  int l;
  if (!PyArg_ParseTuple(args, "u#", &b, &l))
  {
    return NULL;
  }
  TPtrC text((TUint16*)b, l);

  TBuf<512> resultDes;
  TInt evalErrCode = 0;
  TInt errCode = self->iSession.EvalGetResult(text, evalErrCode, resultDes);
  if (errCode) {
    return SPyErr_SetFromSymbianOSErr(errCode);
  }
  return Py_BuildValue("(iu#)", evalErrCode, resultDes.Ptr(), resultDes.Length());
}
Пример #12
0
static PyObject* select_file(PyObject* /*self*/, PyObject* args)
	{
	TInt32 useDefaultTitle;
	char *ttext = NULL;
	TInt ttextlen = 0;

	char *ptext = NULL;
	TInt ptextlen = 0;

	TInt err = KErrNone;
	if (!PyArg_ParseTuple(args, "u#u#i", &ptext, &ptextlen, &ttext, &ttextlen,
			&useDefaultTitle))
		{
		return Py_BuildValue("s", "Cannot parse arguments.");
		}

	Cpyfileselect* obj = Cpyfileselect::NewL();
	const char* res;
	TPtrC path((TUint16*) ptext, ptextlen);
	if (useDefaultTitle == 1)
		{
		TRAPD( err, res = obj->FileSelectionDlg(path, KNullDesC) );
		}
	else
		{
		TPtrC title((TUint16*) ttext, ttextlen);
		TRAPD( err, res = obj->FileSelectionDlg(path, title));
		}

	PyObject* result;

	if (err != KErrNone)
		{
		result = SPyErr_SetFromSymbianOSErr(err);
		}
	else
		{
		result = Py_BuildValue("s", res);
		}
	delete obj;
	return result;
	}
Пример #13
0
// Wraps SelectDeviceUI() to provide a Python method interface. 
// Takes no arguments.
//
// Returns None if user cancelled, otherwise returns a
// (name, address, (service,major,minor)) Python tuple.
static PyObject* LightBlue_SelectDevice(PyObject* self, PyObject* args) 
{
    if (!PyArg_ParseTuple(args, ""))
        return NULL;    
    
    TBTDeviceResponseParamsPckg response;
    TInt err = SelectDeviceUI(response);
     
    if (err) {
        if (err == KErrCancel) {
            // user cancelled
            Py_INCREF(Py_None);
            return Py_None;  
        } else {
            // some other error occured
            return SPyErr_SetFromSymbianOSErr(err);
        }
    }
    if (!(response().IsValidDeviceName())) {
        PyErr_SetString(PyExc_SymbianError, "discovery returned invalid data");
        return NULL;
    }
    
    // get device address
    TBuf8<6*2+5> addrString;
    TBTDevAddr addr = response().BDAddr();
    DevAddressToString(addr, addrString);
    
    // get device class details
    TBTDeviceClass deviceClass = response().DeviceClass();
    TUint16 service = deviceClass.MajorServiceClass();
    TUint8 major = deviceClass.MajorDeviceClass();
    TUint8 minor = deviceClass.MinorDeviceClass();
    
    return Py_BuildValue("s#u#(iii)",
        addrString.Ptr(), addrString.Length(),
        response().DeviceName().Ptr(), response().DeviceName().Length(),
        service,
        major,
        minor);
}
Пример #14
0
// Wraps LookupName() to provide a Python method interface.
// Arguments:
//  - address of the device to look up. Note that the address 
//    is expected without colons!! e.g. "000D9319C868"
//  - True/False - if True, performs a remote name request even if the device
//    name is known in the cache from a previous request.
//
// Returns the name (a Python unicode string).
static PyObject* LightBlue_LookupName(PyObject* self, PyObject* args)
{   
    const char *addr;
    bool ignoreCache;
    if (!PyArg_ParseTuple(args, "sb", &addr, &ignoreCache))
        return NULL;

    THostName deviceName;
    TBTDevAddr wantedAddr;
    
    TBuf16<128> buf;
    buf.Copy(_L8(addr));
    wantedAddr.SetReadable(buf);
    
    TInt err = LookupName(wantedAddr, &deviceName, ignoreCache);
  
    if (err) 
        return SPyErr_SetFromSymbianOSErr(err);    
        
    return Py_BuildValue("u#", deviceName.Ptr(), deviceName.Length());
}
Пример #15
0
static PyObject* select_folder(PyObject* /*self*/, PyObject* args)
	{
	
	
	char *ttext = NULL;
	TInt ttextlen = 0;
	TInt32 useDefaultTitle;
	
	char *rtext = NULL;
	TInt rtextlen = 0;
	TInt32 useDefaultRight;
	
	char *ltext = NULL;
	TInt ltextlen = 0;
	TInt32 useDefaultLeft;
	
	char *mtext = NULL;
	TInt mtextlen = 0;
	
	TInt32 type;
	TCommonDialogType dialogType = ECFDDialogTypeSave;
	
	
	if (!PyArg_ParseTuple(args, "iu#u#iu#iu#i", &type, &mtext, &mtextlen, &ttext, &ttextlen,&useDefaultTitle, &rtext, &rtextlen,&useDefaultRight, &ltext, &ltextlen, &useDefaultLeft))
		{
		return Py_BuildValue("s", "Cannot parse arguments.");
		}
	switch (type)
		{
		case 0:
			{
			dialogType = ECFDDialogTypeSave;
			}
		break;
		case 1:
			{
			dialogType = ECFDDialogTypeMove;
			}
		break;
		case 2:
			{
			dialogType = ECFDDialogTypeCopy;
			}
		break;
		}
	Cpyfileselect* obj = Cpyfileselect::NewL();
	const char* res;
	TPtrC titleP((TUint16*) ttext, ttextlen);
	TPtrC memory((TUint16*) mtext, mtextlen);
	TPtrC leftP((TUint16*) ltext, ltextlen);
	TPtrC rightP((TUint16*) rtext, rtextlen);
	TBuf <20> title;
	title.Append(titleP);
	TBuf <20> right;
	right.Append(rightP);
	TBuf <20> left;
	left.Append(leftP);
	if(useDefaultTitle == 1)
		{
			title = KNullDesC;
		}
	if(useDefaultRight == 1)
		{
			right = KNullDesC;
		}
	if(useDefaultLeft == 1)
		{
			left = KNullDesC;
		}
	TRAPD( err, res = obj->FolderSelectionDlg(dialogType,memory, title, right, left) );

	PyObject* result;

	if (err != KErrNone)
		{
		result = SPyErr_SetFromSymbianOSErr(err);
		}
	else
		{
		result = Py_BuildValue("s", res);
		}
	delete obj;
	return result;
	}