Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About tedp

  • Rank

Profile Information

  • Your Current Device(s)
    Audiovox SMT5600
  1. I'm running WM 6 on my HTC TyTN and using WiFi for email, chat and sufing the web. My problem is that the WiFi connection won't stay connected. At some point it the antenna icon will go empty and never reconnect. Wireless Lan reports that my WiFi network is unavailable. Checking with my laptop shows this to be untrue. This has occurred with multiple wireless networks (both secured and unsecured) Things I have tried that didn't work 1. Using connection manager to turn the WiFi radio off and back on. 2. Rebooting my wireless router (a Linksys WRT54GS) in the case where it was my router. Not possible to test in all situations. 3. Moving my WLAN power setting to "best performance." 4. Powering down the TyTN and powering it back up. 5. Turning off the phone radio. 6. Disabling security on the wireless network. What did work 1. Soft reset using the reset button. 2. Deleting the connection settings for my wireless network, powering down the TyTN and power it back up. None of the things that did work are particularly palatable. And they have to be redone nearly every time I switch wireless networks or let the phone power down the wifi connection while in power save mode. Any suggestions? Ted
  2. I recently purchased a Cingular 8525 and have some questions about how internet connectivity works. Background: 1. I'm not going to drop $500 a year on Cingular's data plan but I do want to receive e-mail on the 8525. What I want to do is receive e-mail over Wi-Fi or Bluetooth if I happen to be close to a partnered PC but not over the cell network. How do I set that up? Every time I go into the Connection manager, I get a list of stuff that all seems to be centered around using the cell network. That makes me nervous. Cingular's data charges are staggering if you don't have a data plan. Also, if at some point in the future, I do have a data plan, how do I configure the phone to favor a Wi-Fi connection over the cell network? Hopefully that made sense. Just very confused about what the relationship between the connection manager and the Wi-Fi network manager. Thanks!
  3. I found a link on another page. If you specify your username (not e-mail address but username...that's an important distinction) as recent:myusername, you get the last 3 or so days worth of mail without things disappearing. Note: This is a gmail only thing. Note: The mail still eventually disappears. When I say "3 or so days" it really seems to be that non-deterministic. Note: The behavior here stinks irrespective of whether it is a g-mail or pocket outlook behavior
  4. They sound technically interesting but the packaging doesn't seem very attractive ;)
  5. Sasa, A couple of things...if you want to write a plug-in as opposed to an application there is pretty good documentation available on this. It sounds like what you want to do is pretty straightforward so I think the documentation is available. If you want to see how to interact with the POOM database (which you will need to do for accessing contacts) please see the response I posted to VanderHuge's message (entitled "Checking for changes in POOM records"). It has some details on interacting with POOM. It's not exactly what you are looking for but perhaps it will be helpful to get you started. Ted
  6. An easy way? No. And it is, apparently, going to change for the next release of Windows Mobile. According to Microsoft, the current calendar plugins and applications also make use of APIs that are unsupported for the general public and will have to change at that time too. Here is what I got from the folks on smartphone.developer at Microsoft. Unfortunately that thread has gone away so the very succinct description is going to be diluted by my heavy handed coding style :) Please note that I am only registering for calendar events, not tasks. You'll have to modify this code slightly to work with that. Grap a handle to the outlook application. For my purposes this is stored in a global. // Globals IPOutlookApp * g_polApp = NULL; int g_PoomInit = 0; // ************************************************************************** // Function Name: GetPoomApp // // Purpose: Gets pointer to POOM application interface // // Arguments: // OUT IFolder ** ppFolder - pointer to IPOutlookApp interface returned. // Must be released by caller of GetPoomApp // // Return Values: // BOOL // returns TRUE if the folder interface was retrieved, FALSE otherwise // // Description: // This function simply returns a pointer to the global Outlook app interface // The returned pointer is simply passed through this function after being AddRef'd. BOOL GetPoomApp(IPOutlookApp **ppOutApp) { if (g_polApp) { g_polApp->AddRef(); *ppOutApp = g_polApp; return TRUE; } else { return FALSE; } } Initialize POOM // ************************************************************************** // Function Name: InitPoom // // Purpose: Creates and logs on to the POOM application object // // Arguments: // none // // Return Values: // BOOL // returns TRUE if POOM was initialized, FALSE otherwise // // Description: // This function creates the POOM application COM object and starts a POOM // session via Logon. This must be done before any subsequent POOM calls are // made. This function may be called repeatedly on an already initialized connection. BOOL InitPoom() { BOOL bSuccess = FALSE; if (!g_polApp) { if (SUCCEEDED(CoInitializeEx( NULL, 0))) { // Now, let's get the main outlook application g_PoomInit++; if (SUCCEEDED(CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER, IID_IPOutlookApp, reinterpret_cast<void **>(&g_polApp)))) { // login to the Pocket Outlook object model g_PoomInit++; if(SUCCEEDED(g_polApp->Logon(NULL))) { bSuccess = TRUE; } } } } else { bSuccess = TRUE; //we're ok...just got called when already initialized. } return bSuccess; } De-Initialize Poom // ************************************************************************** // Function Name: ShutdownPoom // // Purpose: Shuts down the current POOM session // // Arguments: // none // // Return Values: // none // // Description: // This function logs off the current POOM session and releases the POOM // application interface pointer. Sets it to NULL in case the thing gets called // multiple times. void ShutdownPoom() { // if this dude is NULL, make sure you don't call call CoUnitialize(). That's a pretty good sign that // the CoInitialize hasn't been called yet. Anyway, if it's NULL, just return. if (g_polApp) { g_polApp->Logoff(); g_polApp->Release(); g_polApp = NULL; g_PoomInit =0; CoUninitialize(); } } Register for POOM events LRESULT BackgroundWindow::RegisterForDBNotification(void) { LRESULT lr = 0; CENOTIFYREQUEST req; CEOIDINFO oidInfo; CEOID oid; CEGUID guid; unsigned short volName[MAX_PATH]; HANDLE m_hDB = NULL; //initialize all of our objects appropriately memset(&req, 0, sizeof(req)); memset(&oidInfo, 0, sizeof(oidInfo)); memset(&oid, 0, sizeof(oid)); CREATE_INVALIDGUID(&guid); memset(volName, 0, MAX_PATH); // set up the pertinent fields in the request structure req.dwSize = sizeof(req); req.hwnd = GetHwnd(); req.dwFlags = CEDB_EXNOTIFICATION; req.hHeap = 0; req.dwParam = 0; while (CeEnumDBVolumes(&guid, volName, MAX_PATH)) { HANDLE h = CeFindFirstDatabaseEx(&guid, 0); ASSERT(h != INVALID_HANDLE_VALUE ); while (oid = CeFindNextDatabaseEx(h, &guid), oid) { if (CeOidGetInfoEx(&guid, oid, &oidInfo)) { if (lstrcmp(oidInfo.infDatabase.szDbaseName, L"Appointments Database") == 0) { m_hDB = CeOpenDatabaseEx2( &guid, &oid, NULL, 0, CEDB_AUTOINCREMENT, &req); } } } } return(lr); } And finally in my WinMain, handle the message when it gets sent to me. Note that I was writing a plugin rather than an application so I'm notifying the plug-in rather than updating information in my window directly. LRESULT BackgroundWindow::WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lr = 0; switch (uMsg) { case WM_CREATE: { RegisterForDBNotification(); // should register for DB notification here. break; } case WM_CLOSE: { DestroyWindow(GetHwnd()); break; } case WM_DESTROY: { PostQuitMessage(0); break; } case WM_DBNOTIFICATION: { // send data change message to plug-in. SHOnPluginDataChange(CLSID_MULTICAL); break; } default: { lr = DefWindowProc(GetHwnd(), uMsg, wParam, lParam); break; } } return(lr); } Ted
  7. Use the file copy utility (remote file viewer in evc4) to and move the relevant xml and image files over to the emulator. Just bear in in mind that your copied files will be lost when/if you turn off the emulator and don't have state saving turned on. Also be aware that if you do something that crashes the emulator, your state may not be properly saved. Otherwise, it should work pretty much like your phone.
  8. I haven't had that specific problem so I can't comment directly on what caused it. My suggestion for you would be uninstall and reinstall following this tutorial.. I think that if you do that, you'll be fine in the end.
  9. I sure hope you're kidding. If not, well, let's say that your request is a little out of scope for this area.
  10. None of these issues are anything but annoyances...but they are that! PC Environment Windows XP SP2 Activesync 3.8 - connecting via bluetooth using WIDCOMM drivers Phone Audiovox SMT 5600 running Windows Mobile 2003 1. Activesync on the PC side - Whenever I reboot the PC, the serial port gets reset from COM3 to COM1. I have to go in an manually reconfigure it to COM3 2. Activesync on the phone - when you tell activesync to connect to your PC, you have to hit the menu button and select "Connect via Bluetooth". Well...depending on some unknown algorithm that switches on the menu option between 3 and 4. It swaps with "Setup Bluetooth Connection" Anyone else have this? Does anyone have any suggestions on how remove either one of these annoyances?
  11. Add this link to the list of important links to read. It has some excellent and not especially well publicized info about the life cycle of a plugin. Make sure you catch the transcript as well as reading the Powerpoint presentation.
  12. Well, it took me a while to figure this one out. Turns out that the life cycle of a plug-in looks like this: 1. home.exe loads the homescreen XML 2. home.exe fires off a seperate helper process which loads the plugin dlls and executes myPlugin::Initialize() followed by myPlugin::Save(). This allows the very CPU intensive and memory leak prone XML parsing process to be "someone else's problem" with respect to home.exe. Any plugin state that needs to be saved gets persisted in the Save() method call. The normal constructors and destructors get called as well. 3. home.exe loads the dll and calls myPlugin::Load() to retreive any plugin state saved earlier. Plugin class constructor gets called as well. Plugin message processing loop starts up... 4. Eventually the plugin gets unloaded, probably when home.exe exits upon phone shutdown. Destructors get called. Microsoft has a nice presentation here which covers it in considerably more detail. Make sure you read the transcripts associated with the presentation too. Those are extremely helpful. So, net-net is that I need to do any sort of POOM initialization in the constructor for the plugin class or set up a static class that does the necessary work.
  13. Found another technique. Copy the CAB file to \Storage\windows\Start Menu\Accessories. If you access the accessories folder through the start menu, the CAB file will show up as an option. You can execute it from there.
  14. Not that I'm authority on it :?: but I would suggest these as good places to start: General Smartphone development tutorial Plugin Development Microsoft Smartphone Newsgroup For me, I've gotten the most traction out of the "homescreen" sample plugin that comes with the WM 2003 SDK. Read the readme that comes along with it. It gives you good advice on how to compile, move the application over and so on. The things that I've learned in the last week or so as I've started playing around go like this: 1. The eVC application will tell you that it has downloaded and registered your DLL. Don't believe it. You'll have to make a CAB file, copy it to the phone or phone emulator and install it yourself. 2. In the readme I mentioned, it will tell you to use CEStart.exe to install the CAB file you built. Nice idea but the executable doesn't exist. You can do one of two things to get it installed. a. copy the CAB file to \Storage\temp and hit it with IE (e.g give it a URL of file:///temp/yourcab.cab) b. copy the CAB file to \Storage\windows\Start Menu\Accessories. You can then access the CAB file through the start menu. 3. If you like to do smaller code, build and test cycles, get over it. The overhead of installing a dll, connecting to the simulator and debugging will kill you :evil: 4. MessageBox() is your friend in an environment where feedback can be hard to get. 5. Hard reset of the emulator is a frequent process (at least for me :lol: ) so that I can get it to properly release a DLL from memory. 6. I use the remote registry editor, remote process viewer and remote file viewer utilities from eVC a LOT. Check 'em out. All this is also probably more appropriate for the Development forum :(
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.