Vai al contenuto



Foto

[pys60] Nuovo Modulo: Btutils


  • Per favore accedi per rispondere
22 risposte a questa discussione

#1 OFFLINE   memoryn70

memoryn70

    Millennium Member

  • Developer
  • 2117 messaggi
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 03 febbraio 2009 - 15:44

Ciao a tutti!

Per PyS60 esiste una libreria chiamata BTSWITCH che serve ad attivare e disattivare il bluetooth. Il problema è che non funziona a dovere, in quanto disattiva solo da un punto di vista software e i trasferimenti si possono fare comunque!!
Allora cercando in internet ho trovato un altro metodo: quello usato dal programmino famoso btswitch...
Ho quindi deciso, anche per l'utilizzo della libreria in WinFile (cosi la prossima versione che pubblico in questi giorni avrà un supporto decente x il bt), di crearne una nuova che funziona!

Vi presento quindi: btutils
Possiede le stesse identiche funzioni di btswitch ma...funzionano! :thumbs:

on->Accende
off->Spegne
getmode->Ritorna 1 se attivo; 0 se spento

Versione: 1.0
Funziona su tutti i cellulari symbian S60 v2 (testato!)
Per la 3rd edition il codice sarebbe uguale; bisognerebbe solo compilarlo con l'sdk giusto!

Provatela e speriamo vi sia utile!
Se volete posto anche il source...

Download file


Messaggio modificato da memoryn70, 24 febbraio 2009 - 14:56


#2 OFFLINE   pandipo

pandipo

    Millennium Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 1159 messaggi
  • Località:spinea VE
  • Cellulare:n79

Inviato 03 febbraio 2009 - 17:14

Grande. Sempre troppo impegnato XD

#3 OFFLINE   memoryn70

memoryn70

    Millennium Member

  • Developer
  • 2117 messaggi
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 03 febbraio 2009 - 18:38

Grande. Sempre troppo impegnato XD


Smanettare con ste cosette mi piace quando ho un po di tempo... :incazzato:

#4 OFFLINE   memoryn70

memoryn70

    Millennium Member

  • Developer
  • 2117 messaggi
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 05 febbraio 2009 - 14:13

Avete fatto dei test? Funziona anche su cell diversi dall'N70??
Grazie :thumbs:

#5 OFFLINE   Simon88

Simon88

    Advanced Member

  • Utente
  • StellettaStellettaStellettaStelletta
  • 266 messaggi
  • Cellulare:Nokia N8

Inviato 05 febbraio 2009 - 14:49

Avete fatto dei test? Funziona anche su cell diversi dall'N70??
Grazie :)

Testato sul mio 6630, funge alla grande :thumbs: :thumbs:

#6 OFFLINE   pandipo

pandipo

    Millennium Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 1159 messaggi
  • Località:spinea VE
  • Cellulare:n79

Inviato 05 febbraio 2009 - 14:50

Avete fatto dei test? Funziona anche su cell diversi dall'N70??
Grazie :thumbs:

A qunanto pare su 6630 si...

#7 OFFLINE   giangio1986

giangio1986

    Millennium Member

  • Vip Member
  • 3773 messaggi
  • Località:domo mia
  • Cellulare:n95 & 5800

Inviato 06 febbraio 2009 - 12:20

sull'n70 è istantaneo o ci mette una frazione di secondi facendo lo schermo bianco come con btswitch?

#8 OFFLINE   memoryn70

memoryn70

    Millennium Member

  • Developer
  • 2117 messaggi
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 06 febbraio 2009 - 16:39

sull'n70 è istantaneo o ci mette una frazione di secondi facendo lo schermo bianco come con btswitch?


Attenzione, questa è una libreria per pys60 non è un programma :thumbs:

#9 OFFLINE   noki57oo

noki57oo

    Millennium Member

  • Modder
  • 1881 messaggi
  • Località:verona
  • Cellulare:N8
  • Firmware:Belle by noki57oo

Inviato 09 febbraio 2009 - 10:49

ho riletto il topic piu e piu volte ma non vedo l'utilita dell'applicazione, se qualcuno me lo spiega...

#10 OFFLINE   Simon88

Simon88

    Advanced Member

  • Utente
  • StellettaStellettaStellettaStelletta
  • 266 messaggi
  • Cellulare:Nokia N8

Inviato 09 febbraio 2009 - 14:44

ho riletto il topic piu e piu volte ma non vedo l'utilita dell'applicazione, se qualcuno me lo spiega...

Non è un'applicazione ma un modulo in python che permettere di accendere, spengere e sapere lo stato del bluetooth! :thumbs:

#11 OFFLINE   noki57oo

noki57oo

    Millennium Member

  • Modder
  • 1881 messaggi
  • Località:verona
  • Cellulare:N8
  • Firmware:Belle by noki57oo

Inviato 09 febbraio 2009 - 14:56

praticamente accende, spegne e ti dice lo stato del bluettoth e basta? se si non si puo usare l'app di sistema?

Messaggio modificato da noki57oo, 09 febbraio 2009 - 14:57


#12 OFFLINE   memoryn70

memoryn70

    Millennium Member

  • Developer
  • 2117 messaggi
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 09 febbraio 2009 - 15:11

praticamente accende, spegne e ti dice lo stato del bluettoth e basta? se si non si puo usare l'app di sistema?


Ma è difficile capire che è una libreria? Può essere utile a qualche programmatore no? Ad esempio a me serve in WinFile per l'annullamento del trasferimento dei file (nella nuova versione :thumbs:) e per l'attivazione/disattivazione rapida!
E poi mica devo dare delle ragioni a qualcuno di perché faccio una libreria :thumbs: :angry:

Messaggio modificato da memoryn70, 09 febbraio 2009 - 15:12


#13 OFFLINE   noki57oo

noki57oo

    Millennium Member

  • Modder
  • 1881 messaggi
  • Località:verona
  • Cellulare:N8
  • Firmware:Belle by noki57oo

Inviato 09 febbraio 2009 - 15:28

adesso ho capito, è una libreria per implementare nuove funzioni ai programmi (diciamo cosi dai) grazie
pero si puo usare anche "da sola" ?

#14 OFFLINE   SILLYGirl__

SILLYGirl__

    Newbie

  • Utente
  • Stelletta
  • 1 messaggi
  • Cellulare:n81

Inviato 09 febbraio 2009 - 16:26

Si ma capisci bene che così è inutile!

#15 OFFLINE   noki57oo

noki57oo

    Millennium Member

  • Modder
  • 1881 messaggi
  • Località:verona
  • Cellulare:N8
  • Firmware:Belle by noki57oo

Inviato 09 febbraio 2009 - 16:33

lasciamo stare che è meglio

Messaggio modificato da noki57oo, 09 febbraio 2009 - 16:33


#16 OFFLINE   pandipo

pandipo

    Millennium Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 1159 messaggi
  • Località:spinea VE
  • Cellulare:n79

Inviato 09 febbraio 2009 - 16:59

lasciamo stare che è meglio

Aspetta! lasciaci spiegare! Hai presente quando scrivi un programma e richiami una libreria (tipo la ui in mshell)?
Ecco, con questa puoi usare le funzioni di attivare e disattivare il BT da un programma senza ricorrere all'applicazione di sistema!

#17 OFFLINE   Il.Socio

Il.Socio

    Nokioteca Staff

  • Moderatore
  • 8233 messaggi
  • Località:Torino
  • Cellulare:N8-00

Inviato 10 febbraio 2009 - 02:28

Ciao Memory,
nella 3rd io non sono riuscito a trovare una funzione decente che giri su tutti... :mumble:
Che funzione hai usato nella 2nd?

Messaggio modificato da Il.Socio, 10 febbraio 2009 - 02:29

Per segnalare allo Staff un messaggio non conforme al regolamento è sufficiente premere il bottone "Segnala" posizionato in basso a sinistra di ciascun messaggio.

#18 OFFLINE   memoryn70

memoryn70

    Millennium Member

  • Developer
  • 2117 messaggi
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 10 febbraio 2009 - 18:20

Ciao Memory,
nella 3rd io non sono riuscito a trovare una funzione decente che giri su tutti... :crying_anim02:
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 :incazzato:
(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);
 };
#endif

E 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;
}


#19 OFFLINE   Il.Socio

Il.Socio

    Nokioteca Staff

  • Moderatore
  • 8233 messaggi
  • Località:Torino
  • Cellulare:N8-00

Inviato 10 febbraio 2009 - 18:26

conosco la CBTMCMSettings, funziona sui 3rd e sui 3rd FP1, ma rompe la compatibilita' sui 3rd FP2 quindi non posso usarla...
:crying_anim02: peccato...

Messaggio modificato da Il.Socio, 10 febbraio 2009 - 18:32

Per segnalare allo Staff un messaggio non conforme al regolamento è sufficiente premere il bottone "Segnala" posizionato in basso a sinistra di ciascun messaggio.

#20 OFFLINE   mircone

mircone

    Newbie

  • Utente
  • Stelletta
  • 7 messaggi
  • Cellulare:nokia 5800

Inviato 22 febbraio 2009 - 20:03

ciao

funziona anche per il 6600 ?