Hi
I have been trying to connect a program written in Java(J2SE) on my computer with program written in Symbian C++ on the mobile using bluetooth. My simple aim is to pass a string say "Hello World" from my mobile to computer. The Java part is complete and its basically like a server waiting for connection. Bluetooth settings are normal on my computer with microsoft bluetooth emulator, widcomm stack, bluecove and all that. For the mobile part I have used the bt point to point example given in the SDK documentation. But so far Im unable to connect both of them. Here is what I have done:
Firstly to confirm that the java server on computer is working correctly I used the btdiscover example given in sdk to see a list of services offered by my computer. And it works! I see the "MyBtService" (the human readable string name I have given to the java program) on the list with other info like UUID, Handle and other attributes. If u want I can give the exact record (with des and all that) which it showed upon discovery. So the java program works.
Now my logic is that if I can change the UUID to which the bt point to point example connects to....I can make it connect to my java program on the computer and send a simple hello world string. The device discovery part works well, but when I select my computers name from list of devices, I get "connection error".
Here are the changes I did in the source code:
I narrowed down to the CBTServiceSearcher::FindServiceL function in the bt point to point example code. FindServiceL sets up a record filter to filter out just the Serial Port service record. It calls SetRecordFilter on the CSdpAgent to register the filter with the agent .
in this code the iSdpSearchPattern variable contains the attribute (at least thats what I think) which contains the UUID to connect to.
So if you look at the code of the function above... this line iSdpSearchPattern->AddL(ServiceClass());Code:void CBTServiceSearcher::FindServiceL(TRequestStatus& aObserverRequestStatus) { if (!iResponse().IsValidBDAddr()) { User::Leave(KErrNotFound); } iHasFoundService = EFalse; // delete any existing agent and search pattern delete iSdpSearchPattern; iSdpSearchPattern = NULL; delete iAgent; iAgent = NULL; iAgent = CSdpAgent::NewL(*this, BTDevAddr()); iSdpSearchPattern = CSdpSearchPattern::NewL(); iSdpSearchPattern->AddL(ServiceClass()); // return code is the position in the list that the UUID is inserted at // and is intentionally ignored iAgent->SetRecordFilterL(*iSdpSearchPattern); iStatusObserver = &aObserverRequestStatus; iAgent->NextRecordRequestL(); }
is putting the attribute in the variable. How am I suppose to change it to the UUID of my service on the computer?? I tried simply putting the UUID of my service but it gave a variable out of range warning and program didnt work by still showing connection error after selecting the computer from discovered device's list.
Is my logic correct? Then how can I change the UUID attribute?
If my logic is wrong then tell me another way to connect a symbian c++ program on mobile to a java(j2se) program on the computer. Thanks!



