Idéia para solução de um problema

Galera estou com um aparelho GPS Data Logger Holux M1000c, ele guarda na memoria um logger com varias posições, estou tentando encontrar de alguma forma uma maneira de eu ter acesso a essas informações, sei que este aparelho suporta o protocolo SPP Serial Port Profile, que emula uma porta serial via bluetooth, então peço ajuda a quem está mais familiarizado com este tipo de protocolo se é possivel através dele listar arquivos ou pastas do aparelho via bluetooth, para se ter uma ideia de como é guardado estas posições, outros aparelhos funcionam da seguinte forma, eles tem uma memoria flash onde dentro de um arquivo txt, fica todos os dados gravados das ultimas posições, creio eu que este aparelho funcione da mesma forma.

O software que vem junto do aparelho consegue acessar estas informações, limpar a memoria, alterar configurações internas, pena que não vem o código fonte junto ahuhauau.

Se alguem puder dar dica ou uma ideia de como eu possa resolver este problema ficaria muito grato, a posição atual eu já consigo pegar, meu desafio agora é conseguir acessar as posições anteriores na memoria, Obrigado!

[quote=Shakall]Galera estou com um aparelho GPS Data Logger Holux M1000c, ele guarda na memoria um logger com varias posições, estou tentando encontrar de alguma forma uma maneira de eu ter acesso a essas informações, sei que este aparelho suporta o protocolo SPP Serial Port Profile, que emula uma porta serial via bluetooth, então peço ajuda a quem está mais familiarizado com este tipo de protocolo se é possivel através dele listar arquivos ou pastas do aparelho via bluetooth, para se ter uma ideia de como é guardado estas posições, outros aparelhos funcionam da seguinte forma, eles tem uma memoria flash onde dentro de um arquivo txt, fica todos os dados gravados das ultimas posições, creio eu que este aparelho funcione da mesma forma.

O software que vem junto do aparelho consegue acessar estas informações, limpar a memoria, alterar configurações internas, pena que não vem o código fonte junto ahuhauau.

Se alguem puder dar dica ou uma ideia de como eu possa resolver este problema ficaria muito grato, a posição atual eu já consigo pegar, meu desafio agora é conseguir acessar as posições anteriores na memoria, Obrigado![/quote]

Se o software que vem junto permite limpar, alterar,etc, ele faz isto através de um protocolo, o qual, vc prrecisaria conhecer para poder fazer o mesmo.

O SPP é apenas um canal para a transmissão das informações. É igual ao um socket, ou seja, ele é um meio, não existe dialeto a ser falado, pois é a aplicação que vai definir isto. Ex: Um servidor FTP, fala o protocolo FTP, usando socket como meio de conversar com um cliente FTP. Um servidor web, idem.

Se você tiver conhecimento, disposição,etc, pode ir atrás de tentar fazer engenharia reversa nesta comunicação e descobrir como funciona.

Você vai precisar de um sniffer USB para monitorar o que sai/entra do adaptador bluetooth para o GPS.
A partir disto, vc verá os bytes e após inúmeros testes (muitos mesmo), poderá encontrar padrões que te digam que os bytes 0x0d,0x53,0x0C representam o comando limpar memória, por exemplo.

he lele nada é facil neh, hehe, então possivel é tanto que tem esta aplicação em j2me que faz a mesma coisa que o programa que citei, ele apaga o log, pega o log, bem completo, pena que o codigo fonte não está presente.
http://bt747.free.fr/content/?q=node/68

Vou dar mais umas pesquisadas e no ultimo caso vou tentar fazer o que vc citou usar um programa sniffer e ver se consigo entender a conversa do programa com o aparelho.

boone os services de um dispositivo bluetooth não serveria para dizer o que quero fazer com este aparelho? pois quando abro uma conexão com o aparelho e seto o valor 0x1101 ele fica me enviando o tempo todo os dados de localização, nao sei o pq de usar este numero apenas peguei em um exemplo da net e funciona bem, mas agora fiquei na duvida se o segredo não é descobrir os serviços e pedi-los como vc citou acima.

Correto. No caso do SPP vc tem uma porta serial virtual (bluetooth).

Quando vc abre ela, vai passar a receber um monte de bytes que são as coordenadas geográficas num dado formato.
Me lembro de uma revista Webmobile abordar justamente isto e mostrar que os dados estavam no formato NMEA alguma coisa…

[quote=Shakall]
fiquei na duvida se o segredo não é descobrir os serviços e pedi-los como vc citou acima.[/quote]
Descubra os serviços e daí conversamos.

E ae boone, seguinte com o codigo abaixo eu achei 1 serviço com 5 attribute id, tentei pegar o valor destes id com o codigo da linha 8 até a linha 19, mas sem sucesso, no momento que dou o comando data.getValue() da linha 15 dá o erro Class Cast java/lang/ClassCastException wrong data type:10

public void serviceSearchCompleted(int transID, int respCode) {
        serviceSearchOn = false;
        if (servicos.size() > 0) {
            SPPClient client = new SPPClient((ServiceRecord) servicos.elementAt(0), pai);
            StringBuffer mensagem = new StringBuffe("Serviços:\n");
            DataElement data;
            int[] vet;
            for (int pos = 0; pos < servicos.size(); pos++) {//vector com todos os serviços encontrados
                vet = null;
                vet = ((ServiceRecord) servicos.elementAt(pos)).getAttributeIDs();//pega o identificador dos atributos deste serviço
                if (vet != null && vet.length > 0) {
                    for (int l = 0; l < vet.length; l++) {//adiciona em uma string o valor de cada atributo
                        if (((ServiceRecord) servicos.elementAt(pos)) != null && ((ServiceRecord) servicos.elementAt(pos)).getAttributeValue(vet[l]) != null) {
                            data = ((DataElement) ((ServiceRecord) servicos.elementAt(pos)).getAttributeValue(vet[l]));
                            mensagem.append(vet[l] + ":" + data.getValue()+ "\n");
                        }
                    }
                }
            }
            pai.getAlert().setString("GPS Conectado!\n" + mensagem.toString());
            // pai.getAlert().setString("GPS Conectado!");
            pai.switchDisplayable(pai.getAlert(), pai.getLPrincipal());
            pai.setCliente(client);
            client.start();
        } else {
            pai.switchDisplayable(null, pai.getLPrincipal());
        }
    }

Eu não entendo muito deste lance de atributos do serviço, mas pelo o que consegui aé agora este aparelho tem apenas um serviço e 5 id de atributo então acho que estes id deve ser a forma de pedir as informações para o aparelho. O que tu acha a respeito?