Search Archive

Project Idea: Rewrite the front-end for AVIC in .NET CF

By nivanov · Nov 19, 2008in Hacks/Mods💬 21 posts👁️ 3,879 views
Posted Nov 19, 2008 · 17:23 UTC#1

Hey everyone,

I recently posted this idea under the topic about AVIC running Linux. Although, Linux is definitely an option for this system, I think it's a bit of an overkill.

 

I was thinking of rewriting the front-end in managed .NET code for .NET CF platform, and I'm trying to see how many people would be willing to contribute. I'd want to keep it open-source and free, so by contributing, I mostly mean "code". Please reply if you have programming experience in .NET or Java.

Here are a few advantages as well as potential hurdles:

 

Pros:

-.NET is easier so the programming community is larger

-Infinite customization capabilities. It's open source so you can change what you want, if you are able.

-Heavily re-use existing Pioneer functionality through existing DLLs for Ipod integration, as well as IGO interaction

-Limitless compatibility with GPS engines, like TOMTOM, Garmin, IGO, IGuidance etc.

 

Cons:

-Technically challenging. I personally have never written anything major for WinCE. I have extensive experience with .NET though and have written some small software in .NET CF.

-.NET CF might actually be just as slow as Pioneer software (although I really doubt that :) )

-We might not get any support from Pioneer's side in terms of hardware interaction layer. Things we are likely to not have problems with: GPS, Sound, Microphone, Touchscreen - those things are handled by the OS. Things we most likely will have problems with - AM/FM/XM/Sirius/HD Radio and other IPBUS devices, Auxilary IO.

 

Opinions?

Posted Nov 19, 2008 · 17:56 UTC#2

Sounds like a good plan. Question 1 though -- does the unit already have .NET СА installed on it?

Posted Nov 19, 2008 · 18:06 UTC#3

We'll probably end up using .NET CF 2.0, which is, by default, not installed on WinCE 5. It is pretty simple to deploy it though.

Posted Nov 19, 2008 · 18:14 UTC#4

True... Although the unit does not have _that_ much fre space available. After adding 3D buildings for North America and newer maps, I think there's just over 100MB left, and we'd need room for СА and whatever we develop in it.

 

Of course with a proper shell we can run most of the stuff off of SD...

Posted Nov 19, 2008 · 18:32 UTC#5

well boris dont forget that you would be removing alot of the unused pioneer software then since it wouldnt all be needed :/

Posted Nov 19, 2008 · 18:38 UTC#6
well boris dont forget that you would be removing alot of the unused pioneer software then since it wouldnt all be needed :/

 

I, personally, think that it would be a good idea to keep the original shell on the unit to use as a backup. Besides, the native shell and AV/Tel/etc. executables aren't all that big (and we'll need to reuse existing libraries)...

Posted Nov 21, 2008 · 18:34 UTC#7

The more I think about this front-end, the more it looks like a more powerful Launcher, kind of like what LeetCoder. I'll PM him and see if he'd like to join us on this project.

Posted Nov 22, 2008 · 21:57 UTC#8

I'm in - also could get some of my Russian guys to work on it

Posted Nov 24, 2008 · 15:24 UTC#9

I created an SVN tree and uploaded some files to a repository on Assembla:

 

http://www.assembla.com/spaces/OpenNav

 

To contribute to the project you'll need Visual Studio 2005 with AnkhSVN installed (you can use other SVN clients too, but that one integrates well with VS). I also uploaded an emulator image we can use for debugging - you can find it in the Files section.

 

I'll write a short guide to setting up the environment soon.

Posted Nov 24, 2008 · 15:34 UTC#10

I houpe Studio 2008 works for this proj

Posted Nov 24, 2008 · 15:57 UTC#11

Yeah it should... Maybe I should upgrade? For now, please don't commit any non-text files to SVN, like sln or resx.

Posted Nov 24, 2008 · 17:08 UTC#12

I can contribute with the interface design. Just let me know what kind of files you guys need and I will do the rest.

Posted Nov 24, 2008 · 17:35 UTC#13

I structured the resource code so it would be easy to skin the application by providing different files for button images and stuff like that, so we'll definitely need someone to design the "default" skin. It would be nice to get the basic functionality going first though, but you can definitely contribute to GUI components. Thanks!

Posted Nov 24, 2008 · 18:53 UTC#14

I switched to VS 2008 and checked in all the file changes.

Posted Nov 24, 2008 · 21:19 UTC#15
I structured the resource code so it would be easy to skin the application by providing different files for button images and stuff like that, so we'll definitely need someone to design the "default" skin. It would be nice to get the basic functionality going first though, but you can definitely contribute to GUI components. Thanks!

 

Exactly, I need to know the functionalities first. For the map function, what kind of software are you going to use, iGo, TeleAtlas, NAVTEQ?

Posted Nov 24, 2008 · 22:06 UTC#16

Hopefully we can abstract the navigation part of the program, so, given a proper plugin, we can use any 3rd party application, including the ones you listed

Posted Nov 24, 2008 · 22:15 UTC#17

Technically neither TeleAtlas nor Navteq make navigation programs. They just provide maps. But having an option to run an arbitrary navi from SD card would be nice...

Posted Nov 24, 2008 · 22:17 UTC#18

Our options are IGO, IGuidance, Tomtom. There's also Destinator but I think it went out of business. These are the major players and I think these are the ones we should try to support.

Posted Nov 24, 2008 · 22:50 UTC#19

Destinator seems to still exist but I haven't heard much about them lately.

 

Navigon might be another option, and Garmin has a WinCE version as well...

Posted Nov 30, 2008 · 07:05 UTC#20

Sorry guys, I don't think I will be contributing to this project at this time. I am still busy with the Launcher and work, therefore I don't time for anything else at the moment. The launcher I am working on right now is in its early stage of becoming a full frontend ui for the car interface and thus very similar to this project idea. However, I prefer not writing in .NET for several reasons. One is that you will have to install the .NET framework to the unit because the WinCE 5.0 platform on the deck is not preinstalled. I prefer to keep the pioneer deck clean rather than bulking it up. Second, .NET is going to be slower.

 

Even so, I am currently working on writing a wrapper for the pioneer library to communicate with the ipod,etc. I still need to do lot of work disassembling the DLL and figuring out the parameter size and types for each methods. Even though I will not be working with this project, we all can pitch in writing a wrapper for these pioneer libraries.

Posted Dec 01, 2008 · 19:47 UTC#21

Hey leet,

no problem man, I understand. I've been trying to reverse-engineer the ipod library too, since I figured it would be a good start to get the Ipod player to work. As I mentioned before, I don't have that much experience with WinCE. I'm using PE Explorer, same tool I used for windows. It seems that the ipod.dll does have a bunch of useful functions, but PE Explorer does not read parameters that well:

 

// ActiveiPodVR; Index 1; Information not available

// AlphabetSearch; Index 2; Information not available

// AttachToDebugManager; Index 3; Information not available

// BrowseIndexedCategory; Index 4; Information not available

// CancelVR; Index 5; Information not available

// ChangeAudioBookSpeed; Index 6; Information not available

// ChangeRepeat; Index 7; Information not available

// ChangeShuffle; Index 8; Information not available

// ChangeWideScreen; Index 9; Information not available

// DeactiveiPodVR; Index 10; Information not available

 

"Information not available" is where the calling parameters should be listed. What tools are you using for library disassembling? I also tried finding an .exe/.dll that references Ipod.dll to see function calling conventions, but I couldn't find one.

Also, any ideas what IpodCP.dll is supposed to do?