Page 5 of 7 FirstFirst 1234567 LastLast
Results 41 to 50 of 62

Thread: OSDash Genesis Thread - Was: OpenVIS - The Open Vehicle Infotainment Service

  1. #41
    licensed to kill - FKA kev000
    Auto Apps:loading...
    tripzero's Avatar
    Join Date
    Aug 2006
    Location
    16.40618, 120.61106
    Posts
    2,560
    I edited the sf.net project description/name to openVIS. I can't change the unix name right now because sf.net's renaming service is down...
    Former author of LinuxICE, nghost, nobdy.
    Current author of Automotive Message Broker (AMB).
    Works on Tizen IVI. Does not represent anyone or anything but himself.

  2. #42
    Admin. Linux loser.
    Auto Apps:loading...
    Bugbyte's Avatar
    Join Date
    Sep 2004
    Location
    Corning, NY
    Posts
    7,364
    Blog Entries
    2
    Quote Originally Posted by kev000 View Post
    Along the same lines, i think it'd be useful to keep statistics on what kind of trouble codes people get and associate that with a model/make/year. Users can then look at the data and identify future trends for their vehicle.
    Like that idea quite a bit! If openVIS is successful, I'd expect a number of very interesting ideas about services that we haven't thought of right now (street sign ocr, anyone?)
    Quote Originally Posted by ghettocruzer View Post
    I was gung ho on building a PC [until] just recently. However, between my new phone having internet and GPS and all...and this kit...Im starting to have trouble justfiying it haha.
    Want to:
    -Find out about the new iBug iPad install?
    -Find out about carPC's in just 5 minutes? View the Car PC 101 video

  3. #43
    fka - Nextabyte_Matt ioi8's Avatar
    Join Date
    Apr 2006
    Location
    Cleveland
    Posts
    126
    One idea for a webservice is usage tracking. It would actually be good to know what people are doing with their front-ends. Are the people using music playback or radio the most? Are they changing screens alot, or do they use one app for a long time?

    Answers to these questions can really help FE designers optimize the most used applications and also put the most relavent info and effects with the least number of screen presses.

    While some may say this is invasive, I am all for getting accurate data. At this point in time, can you honestly say how often people use a particular FE and for what purpose? Its just not possible without a webservice like this.

  4. #44
    Raw Wave
    Auto Apps:loading...
    justchat_1's Avatar
    Join Date
    Jul 2008
    Location
    Boston, Ma or NY,NY
    Posts
    2,359
    Speaking of if its successful...back on track... kev where are we on the architecture layout?

  5. #45
    licensed to kill - FKA kev000
    Auto Apps:loading...
    tripzero's Avatar
    Join Date
    Aug 2006
    Location
    16.40618, 120.61106
    Posts
    2,560
    Okay, I've got a little more details. This follows a similar pattern to what Matt and I have been already doing.

    The following diagram shows the pattern (Also known as the "strategy pattern"):

    Attachment 57382


    For this pattern, I will describe an example for the Gps Tracking/Traffic service. The pattern should apply to many, if not all other web services on the system. First we have our web service methods. This is what WCF will expose over the internet. For our example, we will likely have 2 methods:

    Code:
    void Announce(string user, string passhash, double latitude, double longitude, double speed)
    void Announce(double latitude, double longitude, double speed)
    These methods will connect up to the backend via an interface. For our example we'll call this IGpsAnnounceBackend. We can hook this interface up with a concrete object using a "Factory". Factories will read the configuration and load the proper assembly at a site-specific level. For our example, we will likely only have one plugin as a backend, but because of the low cost to implement this pattern, even for services that we only contemplate having one backend.

    Code:
    void Announce(..)
    {
       IGpsAnnounceBackend backend = Factory.GpsAnnounceBackend();
    
       backend.Announce(....);
    }
    For methods that require an account, a factory can be used to grab the account management backend:

    Code:
    void Announce(..)
    {
       IUserAccountBackend account = AnotherFactory.GetAccountBackend();
       IUser user = account.GetUser(username, passhash);
       if(user == null)
       {
         ///fail
       }
       else
       {
          IGpsAnnounceBackend backend = Factory.GpsAnnounceBackend();
          backend.Announce(user, lat, long, speed);
       }
    }
    Most account managers track users by a UID of some sort. The backend should reference its data with this UID when applicable.

    It'd be nice to use NHibernate or something similar as the database backend.

    I'll see if I can get us some server space to start a wiki so we can get this all documented.

    Okay, no it's time to plug the holes in my plan! From what I can tell, Matt is excellent at creating the web service and even creating the backend, hooking up with account management stuff etc. Justchat_t, from his experience in is really good at the middle stuff: the factory, the plugin loading, etc (although I'm sure he could do any of what I described above). I can help wherever needed as well. Hopefully we can get a web frontend guy or two as well.
    Attached Images Attached Images  
    Former author of LinuxICE, nghost, nobdy.
    Current author of Automotive Message Broker (AMB).
    Works on Tizen IVI. Does not represent anyone or anything but himself.

  6. #46
    Raw Wave
    Auto Apps:loading...
    justchat_1's Avatar
    Join Date
    Jul 2008
    Location
    Boston, Ma or NY,NY
    Posts
    2,359
    For the most part it sounds pretty do-able:

    Few things I would add:
    1) To Allow for mirrors, load balancing and service changes first step should probably be to get the list of services (just a mirror list for each service) from the server. Maybe we could do that as part of the login step but that would require a login from every service
    2) This example uses announce for the client->server, were you thinking of a seperate call for the server->client or should they both happen on announce and the client then retrieves the response from the factory.
    3) Will this simple concept hold up to things like the music sync database? File streams are not something you want to pass around with function calls. I also was just thinking for the music sync service, having it use the local network first to grab data from the server and then fall back to the web service if not available could help with bandwidth issues.

  7. #47
    licensed to kill - FKA kev000
    Auto Apps:loading...
    tripzero's Avatar
    Join Date
    Aug 2006
    Location
    16.40618, 120.61106
    Posts
    2,560
    Quote Originally Posted by justchat_1 View Post
    For the most part it sounds pretty do-able:

    Few things I would add:
    1) To Allow for mirrors, load balancing and service changes first step should probably be to get the list of services (just a mirror list for each service) from the server. Maybe we could do that as part of the login step but that would require a login from every service
    2) This example uses announce for the client->server, were you thinking of a seperate call for the server->client or should they both happen on announce and the client then retrieves the response from the factory.
    3) Will this simple concept hold up to things like the music sync database? File streams are not something you want to pass around with function calls. I also was just thinking for the music sync service, having it use the local network first to grab data from the server and then fall back to the web service if not available could help with bandwidth issues.
    1) great thinking. The concept of mirrors had escaped my thinking, and without a thick client/assembly on the client machine, it really has to be done at the service level. We should also ask whether we want the service to provide mirroring at all. I know apache has built in stuff for load balancing across multiple mirrors. We have to do that for linuxice. I'm not sure if IIS has similar functions but I assume it would.

    2) Right, I was thinking of a separate call the the client would make ie:

    Code:
    List<CoordinateSpeed> GetTraffic(double Lat, double long, double radius);
    Where CoordinateSpeed is a struct of lat, long and speed (and possibly timestamp indicating when the record was created).

    Something along those lines...

    3) Media Syncing kinda breaks the pattern. It can very well be a hybrid approach where diffs are generated through webservice calls and some other method+protocol is used for the actual transfer between client and server. I've used SOAP calls to transfer files around which worked pretty well. I don't know how it'd perform over the internet with unstable connections. It could be that we just provide some services that making syncing with Amazon S3 or Ubuntu One easier.
    Former author of LinuxICE, nghost, nobdy.
    Current author of Automotive Message Broker (AMB).
    Works on Tizen IVI. Does not represent anyone or anything but himself.

  8. #48
    Raw Wave
    Auto Apps:loading...
    justchat_1's Avatar
    Join Date
    Jul 2008
    Location
    Boston, Ma or NY,NY
    Posts
    2,359
    Quote Originally Posted by kev000 View Post
    1) great thinking. The concept of mirrors had escaped my thinking, and without a thick client/assembly on the client machine, it really has to be done at the service level. We should also ask whether we want the service to provide mirroring at all. I know apache has built in stuff for load balancing across multiple mirrors. We have to do that for linuxice. I'm not sure if IIS has similar functions but I assume it would.
    Yea i'm pretty sure IIS has similar functions but I was even thinking of load balancing and redundancy across domains. That way if theres ever an ISP issue theres an alternate way to get info. You could even round-robin the response list so the balancing is automatic.

    Quote Originally Posted by kev000 View Post
    2) Right, I was thinking of a separate call the the client would make ie:

    Code:
    List<CoordinateSpeed> GetTraffic(double Lat, double long, double radius);
    Where CoordinateSpeed is a struct of lat, long and speed (and possibly timestamp indicating when the record was created).

    Something along those lines...
    Gotcha...sounds good

    Quote Originally Posted by kev000 View Post
    3) Media Syncing kinda breaks the pattern. It can very well be a hybrid approach where diffs are generated through webservice calls and some other method+protocol is used for the actual transfer between client and server. I've used SOAP calls to transfer files around which worked pretty well. I don't know how it'd perform over the internet with unstable connections. It could be that we just provide some services that making syncing with Amazon S3 or Ubuntu One easier.
    Im not even sure diffs would be that effective, most likely someone will either have an entire song file or no song file. We could do a basic sync service where we just call void Sync(string folderPath) and the factory would just grab new files since the last sync. Then the real work would be done by some client app that sits on your media server and figures out what music is new and transfers it to the web server. The only tough part is the first sync.

    That could also tie in with my other idea of the default being a transfer over the local wireless network with the factory falling back to a web service transfer if thats not available.

  9. #49
    Raw Wave
    Auto Apps:loading...
    justchat_1's Avatar
    Join Date
    Jul 2008
    Location
    Boston, Ma or NY,NY
    Posts
    2,359
    *BUMP*

    Ok to try to keep this moving lets get service definitions set. The first 4 that I had were:
    > Online Playlist management
    > Music Sync Services
    > Vin and DTC lookup
    > Online FE configuration (settings management)
    but if we want to bump from or add to that initial list just let me know.

    Definitions:
    * Online Playlist management
    • sendPlaylist(string name, string playlist) or (string name, string[] url)
    • string getPlaylist(name) or string[] getPlaylist(name)
    • string[] getNewPlaylists(DateTime start)

    * Music Sync Services
    • string[] getNewSongs(DateTime start)
    • void getSong(string name,string dest)
    • void sendSong(string url)

    * Vin and DTC lookup
    • struct vehicleInfo getVehicle(string vin)
    • struct dtcInfo getDTC(int manufacturer,string DTC)

    * Online FE configuration (settings management)
    • string[] getNewSettings(DateTime start)
    • string getSetting(string name)
    • void sendSetting(string name, string value)

  10. #50
    n2k
    n2k is offline
    Low Bitrate n2k's Avatar
    Join Date
    Aug 2005
    Posts
    79
    After skiming trou this thread my first question is why go with asp.net ? if it's going to be open why not go with something like python or php ?

Page 5 of 7 FirstFirst 1234567 LastLast

Similar Threads

  1. Open GPS-Traffic Link Web Service
    By tripzero in forum Software & Software Development
    Replies: 0
    Last Post: 07-14-2008, 03:39 PM
  2. Pre-Release Thread: Frodo XM Service
    By frodobaggins in forum Software & Software Development
    Replies: 10
    Last Post: 08-04-2005, 04:10 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •