2004 to 2020 Mazda 3 Forum and Mazdaspeed 3 Forums banner
141 - 160 of 427 Posts
@flyandi, as the mounting folder exists on tmp/mnt/sd_nav/, if I would cp the files for the SDK there, would that work? I mean the path would be the same but the files will be on the CMU instead of the SD, also not sure it that would give any issue as that is supposed to be a mounting folder.
 
@flyandi, as the mounting folder exists on tmp/mnt/sd_nav/, if I would cp the files for the SDK there, would that work? I mean the path would be the same but the files will be on the CMU instead of the SD, also not sure it that would give any issue as that is supposed to be a mounting folder.
You can install nearly anywhere but you need to remake symbolic link (look command ln on the install.sh on USB key. (5 command ln. 4 for the framework and one for apps.)

But on the system you will loose the easy way to install update/apps. You will maybe loose compatibility with future release installation.

Sent from my Nexus 6P using Tapatalk
 
I think about that.. Just make a symbolic link from /tmp/mnt/sd_nav to /mnt/sd_nav...

But take care since /mnt/sd_nav can be request by the system
Sent from my Nexus 6P using Tapatalk
The system request is what makes me worry, maybe I should play it safe and wait for the dealer to check on it, I have already requested the warranty (saying a friend bought an SD and didn't worked on my car) they will check on my 30,000 km service.

Or even wait until the USB support is implemented for the SDK.

In case I try it would be something like this right?

Code:
ln -s /mnt/sd_nav /tmp/mnt/sd_nav
 
Been playing around a bit with CASDK and made the following changes in the speedometer.

1. Changed the RPM cutoff in app.js as my car idles in the 750 range. There also appears to be a scaling issue in the MX-5 but I may not display it in any case.
Code:
    setRPMPosition: function(rpm, params) {

        this.speedoRPMLabel.html(rpm);
        // min
        // MLA
//        if(rpm < 1000) { 
        if(rpm < 500) {
        // MLA
            rpm = 0;
2. Revised app.js to accommodate the reversed GPS compass heading when a NAV card is installed. This fix probably belongs over in the runtime.js somewhere with other data transforms but that is over my head and how to account for in the grand scheme of things needs consideration. I guess the test for a NAV card could be checking for one of the folders or a file.
Code:
    setGPSHeading: function(heading) {
            // MLA
            // Need to correct the gps heading when the factory NAV is installed. 
            // In real life this should be done earlier when data is collected based on detecting factory NAV card (maybe a NAV folder check?).
        heading = (heading + 180) % 360
            // MLA
        // 0 = North, 180 = South
        this.gpsPanel.css({
            transform: 'rotate(' + heading + 'deg)'
        });
    },
Thanks :thumbup1 1::thumbup1 1:
 
StatusBarIcon not Showing in Simulator

@flyandi

BIG THANKS for your fantastic work! :thumbup 1:

Sadly I have some trouble with showing the apps' icon in the status bar as

Code:
..\sdcard\system\templates\SurfaceTmplt\js\SurfaceTmplt.js

118       framework.common.statusBar.setDomainIcon(icon);
seems to have no effect although the icon variable contains the correct(?) path ('file://C:\Users\MYUSERNAME\Downloads\sdcard\apps/app.speedometer/app.png').

Perhaps there is some kind of error in

Code:
..\sdcard\system\runtime\runtime.js

623       icon = this.location + "app.png";
This behavior occurs in every other app that is already included in the CASDK release, too.

I am reporting this only because you did some work already to implement an icon in the apps' status bar. Would be a shame if this nice functionality would stay unused.

@all
Do other people have the same issue?

Greetings, JP

P.S.: I did not test the apps in my car so far.
 
Discussion starter · #149 ·
@flyandi

BIG THANKS for your fantastic work! :thumbup 1:

Sadly I have some trouble with showing the apps' icon in the status bar as

Code:
..\sdcard\system\templates\SurfaceTmplt\js\SurfaceTmplt.js

118       framework.common.statusBar.setDomainIcon(icon);
seems to have no effect although the icon variable contains the correct(?) path ('file://C:\Users\MYUSERNAME\Downloads\sdcard\apps/app.speedometer/app.png').

Perhaps there is some kind of error in

Code:
..\sdcard\system\runtime\runtime.js

623       icon = this.location + "app.png";
This behavior occurs in every other app that is already included in the CASDK release, too.

I am reporting this only because you did some work already to implement an icon in the apps' status bar. Would be a shame if this nice functionality would stay unused.

@all
Do other people have the same issue?

Greetings, JP

P.S.: I did not test the apps in my car so far.

Are you using the latest runtime? There are still lots of moving parts and I am fully focusing to get the Market App and Node backend ready.
 
Are you using the latest runtime?
Yes, downloaded the SDK and Simulator (Windows) today from github.



And don't worry about this too much. As long as you don't have this problem, it might be some kind of mistake on my side.

EDIT:
Used a simple path for the icon 'app.png' and it worked!!! So it's probably depending on path formatting.

Not working formatting:
Code:
icon = this.location + "app.png";
Debug value of icon:
'file://J:\CMUHacks\sdcard\apps/app.SpeedoMeterJP/app.png'

Working Example:
Code:
icon = 'file://J:/CMUHacks/sdcard/apps/app.SpeedoMeterJP/app.png';
Debug value of icon:
'file://J:/CMUHacks/sdcard/apps/app.SpeedoMeterJP/app.png'

Conclusion:
Could be a problem with usage of '\' and '/' on linux or windows OS. Should be rather easily fixable if that is really the reason.

My Fix:

Code:
..\sdcard\system\runtime\runtime.js

	getStatusbarIcon: function() {

			var icon = this.getSetting('statusbarIcon');

			if(icon === true) {
				icon = this.location + "app.png";
				icon = icon.replace(/\\/g,'/');
			}
 
Yes, downloaded the SDK and Simulator (Windows) today from github.



And don't worry about this too much. As long as you don't have this problem, it might be some kind of mistake on my side.

EDIT:
Used a simple path for the icon 'app.png' and it worked!!! So it's probably depending on path formatting.

Not working formatting:
Code:
icon = this.location + "app.png";
Debug value of icon:
'file://J:\CMUHacks\sdcard\apps/app.SpeedoMeterJP/app.png'

Working Example:
Code:
icon = 'file://J:/CMUHacks/sdcard/apps/app.SpeedoMeterJP/app.png';
Debug value of icon:
'file://J:/CMUHacks/sdcard/apps/app.SpeedoMeterJP/app.png'

Conclusion:
Could be a problem with usage of '\' and '/' on linux or windows OS. Should be rather easily fixable if that is really the reason.

My Fix:

Code:
..\sdcard\system\runtime\runtime.js

getStatusbarIcon: function() {

var icon = this.getSetting('statusbarIcon');

if(icon === true) {
icon = this.location + "app.png";
icon = icon.replace(/\\/g,'/');
}
Window? Yeah I ear about that, I should try it one day ;)

... No joke, I will try it on my surface soon ...

Sent from my Nexus 6P using Tapatalk
 
I just wanted to ask if it is possible to send a command line command to the system from a custom application because I though of an idea that would be useful to me. I know basic javascript but I don't know how you can do this if it is possible.

For example to show what I mean,
An application that consists 2 buttons: Disable speed restriction and Enable it.
Is it possible to send "/jci/scripts/set_lvds_speed_restriction_config.sh disable" to the system after the user presses a button?

Of course the documentation hasn't been written so I thought I would ask.
 
Discussion starter · #153 ·
I just wanted to ask if it is possible to send a command line command to the system from a custom application because I though of an idea that would be useful to me. I know basic javascript but I don't know how you can do this if it is possible.

For example to show what I mean,
An application that consists 2 buttons: Disable speed restriction and Enable it.
Is it possible to send "/jci/scripts/set_lvds_speed_restriction_config.sh disable" to the system after the user presses a button?

Of course the documentation hasn't been written so I thought I would ask.
Not with the current version but with the next one that has the node backend.
 
I just wanted to ask if it is possible to send a command line command to the system from a custom application because I though of an idea that would be useful to me. I know basic javascript but I don't know how you can do this if it is possible.

For example to show what I mean,
An application that consists 2 buttons: Disable speed restriction and Enable it.
Is it possible to send "/jci/scripts/set_lvds_speed_restriction_config.sh disable" to the system after the user presses a button?

Of course the documentation hasn't been written so I thought I would ask.
Just add in stage-wifi.sh
websocketd -port=9999 ash

(you need also to copy websocketd and make a chmod on it)

In Javascript open a websocket and send your command.

You can check apps.terminal of my repo of casdk at https://github.com/checksummaster/mazda-custom-application-sdk/tree/master/apps

Sent from my Nexus 6P using Tapatalk
 
Great work guys!
As far as i'm frontend developer i can help you with the UI but i'm not sure how the JCI is working in backstage.

Did you manage how to make ajax requests not only to filesystem but via Wifi to some external servers? I also tried to load some images from the web but it doesn't work. ALso tired to load some JSON files with same results. In simulator this works but not inside car.
Any ideas, is it possible at all?

Other question is about time intervals. Could we set values for interval (speed, rpm) less than 1s?
 
Discussion starter · #156 ·
Great work guys!
As far as i'm frontend developer i can help you with the UI but i'm not sure how the JCI is working in backstage.

Did you manage how to make ajax requests not only to filesystem but via Wifi to some external servers? I also tried to load some images from the web but it doesn't work. ALso tired to load some JSON files with same results. In simulator this works but not inside car.
Any ideas, is it possible at all?

Other question is about time intervals. Could we set values for interval (speed, rpm) less than 1s?
1) We trying to avoid ajax in future version and only focus on web sockets - the node backend only runs through websockets.

2) Posting directly to the internet from the UI is a bad practice. The node backend will have a network proxy that will be able to load data from the internet (when available). I also highly discourage (and won't support/implement) loading content directly into the Opera view. The opera view is not designed for that purpose (no caching, little security options, etc) - don't mistake the opera view for a web browser - it's not.

Loading data on the other side is ok .. as long the payloads are small or are scheduled through the DownloadProxy.

Now it works in the Simulator because you have a full internet connection and no restrictions. In the Node-backend Simulator I will restrict internet usage as well.

3) Currently the system reads from the in-memory-databases via the command line tool which has a 95% overhead since every call is scheduled from the command line - the 1s is already way too small for that process - 5s would be better but that would make the data processors useless.

Anyway, with the node backend - I will be able to read directly from the memory databases and get almost realtime updates.
 
The Custom Application SDK for the Mazda Infotainment System

It's finally coming. Instead of figuring out each application individually, I created this minimalistic micro framework and runtime that allows you to write and deploy custom applications to the Mazda Infotainment System without the hassles.

It also comes with a 1:1 simulator that allows you to run and debug your applications locally without having to deploy to the Infotainment system.

This project is currently under heavy development but hey, we got an alpha release available. There is little documentation available at this point.

Please contribute if you have the time and the energy.

We have an active Trello board running for organization:

https://trello.com/b/rBEWRDdg/alpha-sprint

If you find CMU values that actually provide meaning, please add them here:

https://docs.google.com/spreadsheets/d/1lkVUzhLEMglb7eFglne1iDiJ5vKMpaoxXKW-7bSZ6Ws/edit#gid=0

---

IF YOU USE THIS IN YOUR CAR, PLEASE MAKE SURE YOU HAVE A FIRMWARE VERSION OF V55.x OR HIGHER INSTALLED

Earlier version might be compatible but have not been tested.

---

https://github.com/flyandi/mazda-custom-application-sdk

Download the Simulator:

OSX: https://github.com/flyandi/mazda-cu...plication-sdk/releases/download/0.0.1-alpha/casdk-simulator-0.0.1-alpha-osx.zip

Win: https://github.com/flyandi/mazda-cu...ication-sdk/releases/download/0.0.1-alpha/casdk-simulator-0.0.1-alpha-win32.zip

The runtime SDK with USB installers: https://github.com/flyandi/mazda-cu...azda-custom-application-sdk/releases/download/0.0.1-alpha/casdk-alpha-0.0.2.zip - also needed for the Simulator.

---

To get started:

1) Download the runtime SDK which contains the deploy images. Copy and paste the files in deploy/install to an USB stick, plug the stick on your infotainment and reboot your Infotainment system.

2) Download the Simulator

3) Follow the tutorial in the wiki page on GitHub

4) Copy the contents of the folder sdcard to an SDCard and reboot your system.

5) Enjoy your custom applications
What do I have to install in order to have the demo apps (tetris, snake), do I have to copy files to an SD, a USB?

I am not sure what to do
 
141 - 160 of 427 Posts