├── CNAME ├── favicon.ico ├── favicon.png ├── images ├── AA.mp4 ├── AA.webm ├── AA │ ├── vm1.jpg │ ├── vm2.jpg │ ├── vm3.jpg │ ├── vm4.jpg │ ├── aacall.JPG │ ├── ubuntu.png │ └── terminal.jpg ├── US-flag.jpg ├── adduser1.JPG ├── adduser2.JPG ├── adduser3.JPG ├── adduser4.JPG ├── cmu-back.jpg ├── ss-car.jpg ├── ss │ ├── ss1.png │ ├── ss10.png │ ├── ss11.png │ ├── ss112.png │ ├── ss2.png │ ├── ss3.png │ ├── ss4.png │ ├── ss5.png │ ├── ss6.png │ ├── ss7.png │ ├── ss8.png │ └── ss9.png ├── ssh │ ├── SSH1.png │ ├── SSH2.png │ ├── SSH3.png │ ├── SSH4.png │ ├── SSH5.png │ ├── SSH6.png │ └── SSH8.png ├── thebolt.jpg ├── updated.png ├── casdk │ ├── vdd.png │ ├── clock.png │ ├── snake.png │ ├── tetris.png │ ├── breakout.png │ ├── devtools.png │ ├── gpsspeed.png │ ├── multidash.png │ ├── terminal.png │ ├── background.png │ ├── simplespeedo.png │ └── simpledashboard.png ├── cmu-rx-tx.jpg ├── multidash.webp ├── powered-by.png ├── AA_11-29-2017.png ├── Germany-flag.jpg ├── SF_Automaton.ttf ├── ls-l_output.png ├── scrnCtrlMap.jpg ├── slider │ ├── ver259.JPG │ ├── boot-prev.jpg │ ├── screenshot.jpg │ ├── Screenshot-bgPrev.jpg │ └── Screenshot-ImageJoiner.jpg └── download.svg ├── .gitignore ├── _includes ├── icon-twitter.html ├── icon-github.html ├── changelognav.md ├── icon-twitter.svg ├── icon-github.svg ├── footer.html ├── head.html └── header.html ├── cert.html ├── sl-conf.html ├── stylesheets ├── style.css ├── github-light.css ├── normalize.css ├── stylesheet.css └── style.min.css ├── .gitattributes ├── _layouts ├── page.html ├── default.html └── post.html ├── Gemfile ├── emu.md ├── news.md ├── AA.html ├── _posts ├── 2018-05-20-simpledash.md ├── 2018-08-12-snake.md ├── 2018-08-24-simplespeed.md ├── 2018-10-30-clock.md ├── 2018-09-21-gpsspeed.md ├── 2018-11-01-breakout.md ├── 2018-09-19-tetris.md ├── 2018-06-01-vdd.md ├── 2018-06-15-mulitdash.md ├── 2018-08-30-background.md └── 2018-04-20-im-super-serial.markdown ├── .gitlab-ci.yml ├── index.md ├── speedo.htm ├── videoplayer.md ├── _config.yml ├── js ├── index.js ├── totop.js ├── featherlight.gallery.min.js ├── w3data.js ├── featherlight.min.js └── prism.js ├── css ├── main.scss ├── featherlight.gallery.min.css ├── featherlight.min.css ├── prism.css └── ideal-image-slider.css ├── feed.xml ├── videoplayer-README.md ├── Gemfile.lock ├── id7.md ├── mzdmeter.md ├── screenshots.html ├── speedo_changelog-5.5.md ├── sitemap.xml ├── casdk.html ├── ProTipsDraft.md ├── _sass ├── _syntax-highlighting.scss ├── _base.scss └── _layout.scss ├── casdk.md ├── ProTips.md ├── castscreen.md ├── Speedometer_changelog.html ├── Speedometer_readme.md ├── aa.md ├── serial.md └── Speedometer_readme.html /CNAME: -------------------------------------------------------------------------------- 1 | mazdatweaks.com 2 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/favicon.ico -------------------------------------------------------------------------------- /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/favicon.png -------------------------------------------------------------------------------- /images/AA.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA.mp4 -------------------------------------------------------------------------------- /images/AA.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA.webm -------------------------------------------------------------------------------- /images/AA/vm1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA/vm1.jpg -------------------------------------------------------------------------------- /images/AA/vm2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA/vm2.jpg -------------------------------------------------------------------------------- /images/AA/vm3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA/vm3.jpg -------------------------------------------------------------------------------- /images/AA/vm4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA/vm4.jpg -------------------------------------------------------------------------------- /images/US-flag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/US-flag.jpg -------------------------------------------------------------------------------- /images/adduser1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/adduser1.JPG -------------------------------------------------------------------------------- /images/adduser2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/adduser2.JPG -------------------------------------------------------------------------------- /images/adduser3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/adduser3.JPG -------------------------------------------------------------------------------- /images/adduser4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/adduser4.JPG -------------------------------------------------------------------------------- /images/cmu-back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/cmu-back.jpg -------------------------------------------------------------------------------- /images/ss-car.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss-car.jpg -------------------------------------------------------------------------------- /images/ss/ss1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss1.png -------------------------------------------------------------------------------- /images/ss/ss10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss10.png -------------------------------------------------------------------------------- /images/ss/ss11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss11.png -------------------------------------------------------------------------------- /images/ss/ss112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss112.png -------------------------------------------------------------------------------- /images/ss/ss2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss2.png -------------------------------------------------------------------------------- /images/ss/ss3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss3.png -------------------------------------------------------------------------------- /images/ss/ss4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss4.png -------------------------------------------------------------------------------- /images/ss/ss5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss5.png -------------------------------------------------------------------------------- /images/ss/ss6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss6.png -------------------------------------------------------------------------------- /images/ss/ss7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss7.png -------------------------------------------------------------------------------- /images/ss/ss8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss8.png -------------------------------------------------------------------------------- /images/ss/ss9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ss/ss9.png -------------------------------------------------------------------------------- /images/ssh/SSH1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ssh/SSH1.png -------------------------------------------------------------------------------- /images/ssh/SSH2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ssh/SSH2.png -------------------------------------------------------------------------------- /images/ssh/SSH3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ssh/SSH3.png -------------------------------------------------------------------------------- /images/ssh/SSH4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ssh/SSH4.png -------------------------------------------------------------------------------- /images/ssh/SSH5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ssh/SSH5.png -------------------------------------------------------------------------------- /images/ssh/SSH6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ssh/SSH6.png -------------------------------------------------------------------------------- /images/ssh/SSH8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ssh/SSH8.png -------------------------------------------------------------------------------- /images/thebolt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/thebolt.jpg -------------------------------------------------------------------------------- /images/updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/updated.png -------------------------------------------------------------------------------- /images/AA/aacall.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA/aacall.JPG -------------------------------------------------------------------------------- /images/AA/ubuntu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA/ubuntu.png -------------------------------------------------------------------------------- /images/casdk/vdd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/vdd.png -------------------------------------------------------------------------------- /images/cmu-rx-tx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/cmu-rx-tx.jpg -------------------------------------------------------------------------------- /images/multidash.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/multidash.webp -------------------------------------------------------------------------------- /images/powered-by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/powered-by.png -------------------------------------------------------------------------------- /images/AA/terminal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA/terminal.jpg -------------------------------------------------------------------------------- /images/AA_11-29-2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/AA_11-29-2017.png -------------------------------------------------------------------------------- /images/Germany-flag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/Germany-flag.jpg -------------------------------------------------------------------------------- /images/SF_Automaton.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/SF_Automaton.ttf -------------------------------------------------------------------------------- /images/casdk/clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/clock.png -------------------------------------------------------------------------------- /images/casdk/snake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/snake.png -------------------------------------------------------------------------------- /images/casdk/tetris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/tetris.png -------------------------------------------------------------------------------- /images/ls-l_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/ls-l_output.png -------------------------------------------------------------------------------- /images/scrnCtrlMap.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/scrnCtrlMap.jpg -------------------------------------------------------------------------------- /images/slider/ver259.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/slider/ver259.JPG -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | .jekyll-metadata 4 | stdout.txt 5 | _config.yml 6 | public/ 7 | old/ 8 | -------------------------------------------------------------------------------- /images/casdk/breakout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/breakout.png -------------------------------------------------------------------------------- /images/casdk/devtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/devtools.png -------------------------------------------------------------------------------- /images/casdk/gpsspeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/gpsspeed.png -------------------------------------------------------------------------------- /images/casdk/multidash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/multidash.png -------------------------------------------------------------------------------- /images/casdk/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/terminal.png -------------------------------------------------------------------------------- /images/casdk/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/background.png -------------------------------------------------------------------------------- /images/casdk/simplespeedo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/simplespeedo.png -------------------------------------------------------------------------------- /images/slider/boot-prev.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/slider/boot-prev.jpg -------------------------------------------------------------------------------- /images/slider/screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/slider/screenshot.jpg -------------------------------------------------------------------------------- /images/casdk/simpledashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/casdk/simpledashboard.png -------------------------------------------------------------------------------- /images/slider/Screenshot-bgPrev.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/slider/Screenshot-bgPrev.jpg -------------------------------------------------------------------------------- /images/slider/Screenshot-ImageJoiner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Trevelopment/mazdatweaks/HEAD/images/slider/Screenshot-ImageJoiner.jpg -------------------------------------------------------------------------------- /_includes/icon-twitter.html: -------------------------------------------------------------------------------- 1 | {% include icon-twitter.svg %}{{ include.username }} 2 | -------------------------------------------------------------------------------- /cert.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | permalink: /.well-known/acme-challenge/ekWJhbwW3sCARQQdCad0ZqjybB2AplIeL25fzqIXY-U/ 4 | --- 5 | 6 | ekWJhbwW3sCARQQdCad0ZqjybB2AplIeL25fzqIXY-U.VJfaOxtLEglJvxUUeVUhdAIzxTA_EqeXYcy-j2s0dnc 7 | -------------------------------------------------------------------------------- /sl-conf.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | permalink: /.well-known/acme-challenge/aw8yMIN_5403b6ECoNwxBo68s2uoxw1_PMMCld6IXz0/ 4 | --- 5 | 6 | aw8yMIN_5403b6ECoNwxBo68s2uoxw1_PMMCld6IXz0.VJfaOxtLEglJvxUUeVUhdAIzxTA_EqeXYcy-j2s0dnc 7 | -------------------------------------------------------------------------------- /stylesheets/style.css: -------------------------------------------------------------------------------- 1 | article { 2 | border-bottom: 3px dashed; 3 | } 4 | .casdk-app-grid { 5 | display: grid; 6 | grid-gap: 10px; 7 | grid-template-columns: 1fr 1fr; /* Dividing website into columns of 2 equal fractions */ 8 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 | 6 | 9 | 10 |
11 | {{ content }} 12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | ruby RUBY_VERSION 3 | 4 | # This will help ensure the proper Jekyll version is running. 5 | gem "jekyll", "3.6.3" 6 | 7 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 8 | gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 9 | 10 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 | {% include header.html %} 9 | 10 |
11 |
12 | {{ content }} 13 |
14 |
15 | 16 | {% include footer.html %} 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /emu.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /emu/ 4 | --- 5 | 6 | # MZD-EMU: Emulator for the MZD Infotainment System 7 | 8 | MZD-EMU v0.0.1 9 | 10 | This app is early in its development I welcome contributors sent me an email @ [Trez@mazdatweaks.com](mailto:Trez@mazdatweaks.com?subject=Contribute%20to%20MZD-EMU) if you want to contribute. The app is built with [Electron](http://electron.atom.io) 11 | -------------------------------------------------------------------------------- /news.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /news/ 4 | --- 5 | 6 | # MZD-AIO-TI in the NEWS 7 | 8 | * 9 | * 10 | * 11 | * 12 | -------------------------------------------------------------------------------- /_includes/icon-github.html: -------------------------------------------------------------------------------- 1 | {{ site.project_name }} is maintained by {% include icon-github.svg %}{{ include.username2 }}. 2 | Site by {% include icon-github.svg %}{{ include.username }} © 2016 3 | -------------------------------------------------------------------------------- /AA.html: -------------------------------------------------------------------------------- 1 |
2 | 7 |
8 | -------------------------------------------------------------------------------- /_posts/2018-05-20-simpledash.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Simple Dashboard" 4 | date: 2018-06-19 01:00:00 -0800 5 | categories: casdk 6 | ghlink: https://gitlab.com/casdk/casdk-simpledashboard 7 | --- 8 | 9 | 10 | A simple dashboard app that shows one value at a time. 11 | 12 | [Gitlab Repo]({{page.ghlink}}) 13 | 14 | ![VDD](/images/casdk/simpledashboard.png) 15 | 16 | **Controls:** 17 | 18 | - Select: Toggle NA/EU 19 | - Rotate Wheel: Change Shown Value -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | image: ruby:2.3 2 | 3 | variables: 4 | JEKYLL_ENV: production 5 | 6 | before_script: 7 | - bundle install 8 | 9 | test: 10 | stage: test 11 | script: 12 | - bundle exec jekyll build -d test 13 | artifacts: 14 | paths: 15 | - test 16 | except: 17 | - master 18 | 19 | pages: 20 | stage: deploy 21 | script: 22 | - bundle exec jekyll build -d public 23 | artifacts: 24 | paths: 25 | - public 26 | only: 27 | - master 28 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include_relative README.md %} 6 | 25 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 | 6 |
7 |

{{ page.title }}

8 | 9 |
10 | 11 |
12 | {{ content }} 13 |
14 | 15 |
16 | -------------------------------------------------------------------------------- /_posts/2018-08-12-snake.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Snake" 4 | date: 2018-08-11 01:00:00 -0800 5 | categories: casdk 6 | ghlink: 7 | --- 8 | 9 | #### AIO-Code: 10 | 11 | Copy 12 | 13 | 14 | The game known as Snake. 15 | 16 | ![Snake](/images/casdk/snake.png) 17 | 18 | **Controls:** 19 | 20 | - Up / Down /Left / Right: Turn Snake 21 | - Rotate Wheel: CW: Right / Down, CCW: Left/ Up -------------------------------------------------------------------------------- /_includes/changelognav.md: -------------------------------------------------------------------------------- 1 | [1.50](#v150---2016-07-22 'V1.50') 2 | [1.49](#v149---2016-07-02 'V1.49') 3 | [1.48](#v148---2016-06-16 'V1.48') 4 | [1.47](#v147---2016-06-02 'V1.47') 5 | [1.46](#v146---2016-05-05 'V1.46') 6 | [1.45](#v145---2016-04-30 'V1.45') 7 | [1.44](#v144---2016-04-13 'V1.44') 8 | [1.43](#v143---2016-03-24 'V1.43') 9 | [1.42](#v142---2016-03-20----again-a-lot- 'V1.42') 10 | [1.41](#v141---2016-02-27 'V1.41') 11 | [1.40](#v140---2016-02-20----it-has-taken-some-time-but-there-has-done-a-lot-so-jump-from-136-to-140- 'V1.40') 12 | [1.36](#v136---2016-02-07 'V1.36') 13 | [1.35](#v135---2016-02-05 'V1.35') 14 | [1.33](#v133---2016-01-29 'V1.33') 15 | [1.2x](#v12x---2016-01-20 'V1.2x') 16 | [1.1x](#v10---2016-01 'V1.1x') -------------------------------------------------------------------------------- /stylesheets/github-light.css: -------------------------------------------------------------------------------- 1 | .pl-c{color:#969896}.pl-c1,.pl-s .pl-v{color:#0086b3}.pl-e,.pl-en{color:#795da3}.pl-smi,.pl-s .pl-s1{color:#333}.pl-ent{color:#63a35c}.pl-k{color:#a71d5d}.pl-s,.pl-pds,.pl-s .pl-pse .pl-s1,.pl-sr,.pl-sr .pl-cce,.pl-sr .pl-sre,.pl-sr .pl-sra{color:#183691}.pl-v{color:#ed6a43}.pl-id{color:#b52a1d}.pl-ii{color:#f8f8f8;background-color:#b52a1d}.pl-sr .pl-cce{font-weight:bold;color:#63a35c}.pl-ml{color:#693a17}.pl-mh,.pl-mh .pl-en,.pl-ms{font-weight:bold;color:#1d3e81}.pl-mq{color:#008080}.pl-mi{font-style:italic;color:#333}.pl-mb{font-weight:bold;color:#333}.pl-md{color:#bd2c00;background-color:#ffecec}.pl-mi1{color:#55a532;background-color:#eaffea}.pl-mdr{font-weight:bold;color:#795da3}.pl-mo{color:#1d3e81} 2 | -------------------------------------------------------------------------------- /_posts/2018-08-24-simplespeed.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Simple Speedometer" 4 | date: 2018-08-24 01:00:00 -0800 5 | categories: casdk 6 | ghlink: 7 | --- 8 | 9 | #### AIO-Code: 10 | 11 | Copy 12 | 13 | 14 | A Simple Speedometer App. 15 | 16 | ![Simple Speedometer](/images/casdk/simplespeedo.png) 17 | 18 | **Controls:** 19 | 20 | - Up: Toggle Statusbar 21 | - Down: Toggle Background 22 | - Select: Toggle NA/EU Mode 23 | -------------------------------------------------------------------------------- /images/download.svg: -------------------------------------------------------------------------------- 1 | DownloadDownloadMZD-AIO-TIMZD-AIO-TI -------------------------------------------------------------------------------- /_includes/icon-twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_posts/2018-10-30-clock.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Clock" 4 | date: 2018-10-28 01:00:00 -0800 5 | categories: casdk 6 | ghlink: https://github.com/blouin/apps_mazda 7 | --- 8 | 9 | #### AIO-Code: 10 | 11 | Copy 12 | 13 | A Simple Analog Clock App. 14 | By: [Blouin]({{page.ghlink}}) 15 | 16 | ![Clock](/images/casdk/clock.png) 17 | 18 | **Controls:** 19 | 20 | - Up: Toggle StatusBar 21 | - Down: Toggle Background 22 | - Rotate: Brightness Up / Down 23 | - Select: Toggle Blackout 24 | 25 | -------------------------------------------------------------------------------- /_posts/2018-09-21-gpsspeed.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "GPS Speed" 4 | date: 2018-09-21 01:00:00 -0800 5 | categories: casdk 6 | ghlink: 7 | --- 8 | 9 | #### AIO-Code: 10 | 11 | Copy 12 | 13 | 14 | A Speedometer With Some Cool features Including Graph/Histogram & Speed Limit Warning 15 | 16 | ![GPS SPEED](/images/casdk/gpsspeed.png) 17 | 18 | **Controls:** 19 | 20 | - Right: Toggle window (graph/histogram) 21 | - Left: Toggle Help 22 | - Rotate: Set Local Speed Limit (+- 10) 23 | - Select: Toggle Region (eu/na) 24 | 25 | -------------------------------------------------------------------------------- /_posts/2018-11-01-breakout.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Breakout" 4 | date: 2018-10-29 01:00:00 -0800 5 | categories: casdk 6 | imglink: /images/casdk/breakout.png 7 | ghlink: https://github.com/flyandi/mazda-custom-application-sdk 8 | --- 9 | 10 | #### AIO-Code: 11 | 12 | Copy 13 | 14 | The Classic Block Busting Game Breakout 15 | 16 | By: [Flyandi]({{page.ghlink}}) 17 | 18 | ![{{page.title}}]({{page.imglink}}) 19 | 20 | **Controls:** 21 | 22 | - Rotate / Left / Right: Move Left / Right 23 | - Select: Start 24 | -------------------------------------------------------------------------------- /_posts/2018-09-19-tetris.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Tetris" 4 | date: 2018-09-19 01:00:00 -0800 5 | categories: casdk 6 | imglink: /images/casdk/tetris.png 7 | ghlink: https://github.com/flyandi/mazda-custom-application-sdk 8 | --- 9 | 10 | #### AIO-Code: 11 | 12 | Copy 13 | 14 | The Classic Game Tetris 15 | 16 | By: [Flyandi]({{page.ghlink}}) 17 | 18 | ![{{page.title}}]({{page.imglink}}) 19 | 20 | **Controls:** 21 | 22 | - Up: Rotate Block 23 | - Down: Drop Block 24 | - Left / Right: Move Left / Right 25 | - Select: Rotate Block 26 | -------------------------------------------------------------------------------- /speedo.htm: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /speedo/ 4 | --- 5 | 6 |

Speedometer README

7 | {% include_relative Speedometer_readme.html %}

8 |
9 |

Speedometer Changelog

10 | {% include_relative Speedometer_changelog.html %}

11 | 12 | 31 | -------------------------------------------------------------------------------- /_posts/2018-06-01-vdd.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "VDD Vehicle Data Diagnostic" 4 | date: 2018-06-20 01:00:00 -0800 5 | categories: casdk 6 | ghlink: https://gitlab.com/casdk/casdk-vdd/ 7 | --- 8 | 9 | #### AIO-Code: 10 | 11 | Copy 12 | 13 | 14 | This is a the frameworks internal application to monitor the data values. 15 | 16 | **This app shows all raw data values available to the infotainment system.** 17 | 18 | [Gitlab Repo]({{page.ghlink}}) 19 | 20 | ![VDD](/images/casdk/vdd.png) 21 | 22 | **Controls:** 23 | 24 | - Left / Right: Select Tab 25 | - Rotate Wheel: Scroll Up / Down 26 | - Up / Down: Page Up / Down -------------------------------------------------------------------------------- /videoplayer.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /videoplayer/ 4 | --- 5 |

VideoPlayer Repository

6 |
7 |

README

8 | {% include_relative videoplayer-README.md %} 9 |
10 | 13 | 32 | -------------------------------------------------------------------------------- /_includes/icon-github.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_posts/2018-06-15-mulitdash.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "MultiDash" 4 | date: 2018-07-08 02:00:00 -0800 5 | categories: casdk 6 | ghlink: https://github.com/kutothe/mazda-dash 7 | --- 8 | 9 | 10 | #### AIO-Code: 11 | 12 | Copy 13 | 14 | An immersive yet simplistic digital speedometer app. 15 | 16 | Displays basic information about speed, temperature, time, fuel, fuel economy, etc. 17 | 18 | 19 | [Github Repo]({{page.ghlink}}) 20 | 21 | ![MultiDash](/images/ss-car.jpg) 22 | ![Spin the Wheel!](/images/multidash.webp) 23 | 24 | **Controls:** 25 | 26 | - Select: Toggle NA/EU 27 | - Rotate Wheel: Change Color Theme 28 | - Right/Left: Adjust Brightness 29 | - Down: Toggle Font -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole blog, values 4 | # which you are expected to set up once and rarely need to edit after that. 5 | # For technical reasons, this file is *NOT* reloaded automatically when you use 6 | # 'jekyll serve'. If you change this file, please restart the server process. 7 | 8 | # Site settings 9 | title: Mazda AIO Tweaks 10 | project_name: MZD-AIO-TI | MZD All In One Tweaks Installer 11 | email: aio@MazdaTweaks.com 12 | email2: Trez@MazdaTweaks.com 13 | email3: Siutsch@MazdaTweaks.com 14 | description: > # this means to ignore newlines until "baseurl:" 15 | All-in-one installer/uninstaller for many available Mazda MZD Infotainment System tweaks. 16 | baseurl: "" # the subpath of your site, e.g. /blog 17 | url: "//mazdatweaks.com" 18 | #url: "http://mazda.tweaks:4000" 19 | #port: 4000 20 | github_username: Trevelopment 21 | github_username2: Siutsch 22 | project_page: "http://github.com/Trevelopment/MZD-AIO/" 23 | version: "2.8.6" 24 | # Build settings 25 | markdown: kramdown 26 | 27 | kramdown: 28 | parse_block_html: true 29 | input: GFM 30 | -------------------------------------------------------------------------------- /js/index.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | $('img').each(function(){ 3 | if($(this).parent().prop('tagName') !== 'A') { 4 | $(this).attr('data-featherlight-type','image'); 5 | $(this).attr('data-featherlight',$(this).attr('src')); 6 | } else { 7 | $(this).parent().addClass('dl-link'); 8 | } 9 | }); 10 | $('.page-content a:not(".dl-link")').attr('target','_blank'); 11 | $('h5 a').attr('target','_top'); 12 | $('.one-liner').parent().addClass('one-liners'); 13 | }) 14 | 15 | function copyCode(x) { 16 | $(x).select(); 17 | var copyText = document.execCommand("Copy"); 18 | if(copyText) $(x).parents('li').children('.copy-msg').append("Copied to Clipboard"); 19 | $('.copied-msg').fadeOut(4000); 20 | snackbar($(x).val()); 21 | } 22 | 23 | function snackbar(message) { 24 | // Get the snackbar DIV 25 | var x = document.getElementById("snackbar"); 26 | x.innerHTML = message + ' Copied to Clipboard'; 27 | // Add the "show" class to DIV 28 | x.className = "show"; 29 | 30 | // After 3 seconds, remove the show class from DIV 31 | setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000); 32 | } 33 | -------------------------------------------------------------------------------- /_posts/2018-08-30-background.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Background" 4 | date: 2018-07-08 01:00:00 -0800 5 | categories: casdk 6 | ghlink: 7 | --- 8 | 9 | #### AIO-Code: 10 | 11 | Copy 12 | 13 | 14 | Change your background on the fly. The first background will reset to your default. 15 | 16 | ![Background](/images/casdk/background.png) 17 | 18 | **Controls:** 19 | 20 | - Up / Down / Left / Right / Rotate: Select Background 21 | - Select: Choose Background 22 | 23 | ##### Adding your own backgrounds: 24 | 1. Choose a image that is 800x480 25 | 2. Go into the folder `casdk/apps/app.background/background` and put the image in that folder with the others 26 | 3. In that same folder open the file "list.js" and add the name of the file to the list in quotes and comma after like the other list entries. You can add it anywhere in the list. 27 | 4. Last step is to make a smaller copy of the image size 225x135 with the same filename and add it to `casdk/apps/app.background/icons` -------------------------------------------------------------------------------- /css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Only the main Sass file needs front matter (the dashes are enough) 3 | --- 4 | @charset "utf-8"; 5 | 6 | 7 | 8 | // Our variables 9 | $base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 10 | $base-font-size: 16px; 11 | $base-font-weight: 400; 12 | $small-font-size: $base-font-size * 0.875; 13 | $base-line-height: 1.5; 14 | 15 | $spacing-unit: 30px; 16 | 17 | $text-color: #111; 18 | $background-color: #fdfdfd; 19 | $brand-color: #2a7ae2; 20 | 21 | $grey-color: #828282; 22 | $grey-color-light: lighten($grey-color, 40%); 23 | $grey-color-dark: darken($grey-color, 25%); 24 | 25 | // Width of the content area 26 | $content-width: 800px; 27 | 28 | $on-palm: 600px; 29 | $on-laptop: 800px; 30 | 31 | 32 | 33 | // Use media queries like this: 34 | // @include media-query($on-palm) { 35 | // .wrapper { 36 | // padding-right: $spacing-unit / 2; 37 | // padding-left: $spacing-unit / 2; 38 | // } 39 | // } 40 | @mixin media-query($device) { 41 | @media screen and (max-width: $device) { 42 | @content; 43 | } 44 | } 45 | 46 | 47 | 48 | // Import partials from `sass_dir` (defaults to `_sass`) 49 | @import 50 | "base", 51 | "layout", 52 | "syntax-highlighting" 53 | ; 54 | -------------------------------------------------------------------------------- /_posts/2018-04-20-im-super-serial.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Serial" 4 | side_menu: true 5 | top_menu: true 6 | date: 2018-04-06 01:00:00 -0800 7 | categories: serial 8 | --- 9 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. 10 | 11 | To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. 12 | 13 | Jekyll also offers powerful support for code snippets: 14 | 15 | {% highlight ruby %} 16 | def print_hi(name) 17 | puts "Hi, #{name}" 18 | end 19 | print_hi('Tom') 20 | #=> prints 'Hi, Tom' to STDOUT. 21 | {% endhighlight %} 22 | 23 | 24 | Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. 25 | 26 | [jekyll-docs]: http://jekyllrb.com/docs/home 27 | [jekyll-gh]: https://github.com/jekyll/jekyll 28 | [jekyll-talk]: https://talk.jekyllrb.com/ 29 | -------------------------------------------------------------------------------- /feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | 5 | 6 | 7 | {{ site.title | xml_escape }} 8 | {{ site.description | xml_escape }} 9 | {{ site.url }}{{ site.baseurl }}/ 10 | 11 | {{ site.time | date_to_rfc822 }} 12 | {{ site.time | date_to_rfc822 }} 13 | Jekyll v{{ jekyll.version }} 14 | {% for post in site.posts limit:10 %} 15 | 16 | {{ post.title | xml_escape }} 17 | {{ post.content | xml_escape }} 18 | {{ post.date | date_to_rfc822 }} 19 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 20 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 21 | {% for tag in post.tags %} 22 | {{ tag | xml_escape }} 23 | {% endfor %} 24 | {% for cat in post.categories %} 25 | {{ cat | xml_escape }} 26 | {% endfor %} 27 | 28 | {% endfor %} 29 | 30 | 31 | -------------------------------------------------------------------------------- /videoplayer-README.md: -------------------------------------------------------------------------------- 1 | # Mazda Videoplayer 2 | ## Videoplayer app for Mazda cars with Mazda Connect v55+ 3 | 4 | **It works better if you start the car without usb connected. Insert only the usb with movies. Stop the music player and then start the videoplayer.** 5 | 6 | **To hear the video player sound select the active audio source as the same USB as the videos you are playing. Pause audio or play a silent track then start the video and you will hear sound.** 7 | #### Multicontroller Actions: 8 | 9 | 10 | | :--- | :---: | :---: | 11 | | Multicontroller Action | [ In Video List ] | [ During Playback ] | 12 | | Press Command Knob | Select video | Play/pause | 13 | | Tilt Up | Video list pgup | Toggle fullscreen(next video) | 14 | | Tilt Down | Video list pgdn | Stop | 15 | | Tilt Right | Scroll Options | Next | 16 | | Tilt Left | Scroll Options | Previous | 17 | Rotate Command Knob CCW | Scroll video list up | RW (10 seconds) | 18 | Rotate Command Knob CW | Scroll video list down | FF (10 seconds) | 19 | 20 | #### ScreenTap Actions [ During Playback ]: 21 | 22 | | Action: | Play/Pause | Stop | Prev | Next | RW | FF | Shuffle | RepeatAll | 23 | | :--- | :---: | :---: | :---: | :---: | :---: | :---:| :---: | :---: | 24 | | **Tap Area:** | Center | Bottom Center | Top Left | Top Right | Bottom Left | Bottom Right | Top RightCenter | Top LeftCenter | 25 | 26 | ![Touch Screen Control Map](/images/scrnCtrlMap.jpg) 27 | -------------------------------------------------------------------------------- /css/featherlight.gallery.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Featherlight Gallery – an extension for the ultra slim jQuery lightbox 3 | * Version 1.7.1 - http://noelboss.github.io/featherlight/ 4 | * 5 | * Copyright 2017, Noël Raoul Bossart (http://www.noelboss.com) 6 | * MIT Licensed. 7 | **/ 8 | @media all{.featherlight-next,.featherlight-previous{display:block;position:absolute;top:25px;right:25px;bottom:0;left:80%;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:rgba(0,0,0,0)}.featherlight-previous{left:25px;right:80%}.featherlight-next:hover,.featherlight-previous:hover{background:rgba(255,255,255,.25)}.featherlight-next span,.featherlight-previous span{display:none;position:absolute;top:50%;left:5%;width:82%;text-align:center;font-size:80px;line-height:80px;margin-top:-40px;text-shadow:0 0 5px #fff;color:#fff;font-style:normal;font-weight:400}.featherlight-next span{right:5%;left:auto}.featherlight-next:hover span,.featherlight-previous:hover span{display:inline-block}.featherlight-loading .featherlight-next,.featherlight-loading .featherlight-previous,.featherlight-swipe-aware .featherlight-next,.featherlight-swipe-aware .featherlight-previous{display:none}}@media only screen and (max-device-width:1024px){.featherlight-next:hover,.featherlight-previous:hover{background:0 0}.featherlight-next span,.featherlight-previous span{display:block}}@media only screen and (max-width:1024px){.featherlight-next,.featherlight-previous{top:10px;right:10px;left:85%}.featherlight-previous{left:10px;right:85%}.featherlight-next span,.featherlight-previous span{margin-top:-30px;font-size:40px}} -------------------------------------------------------------------------------- /css/featherlight.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Featherlight - ultra slim jQuery lightbox 3 | * Version 1.7.1 - http://noelboss.github.io/featherlight/ 4 | * 5 | * Copyright 2017, Noël Raoul Bossart (http://www.noelboss.com) 6 | * MIT Licensed. 7 | **/ 8 | @media all{.featherlight{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483647;text-align:center;white-space:nowrap;cursor:pointer;background:#333;background:rgba(0,0,0,0)}.featherlight:last-of-type{background:rgba(0,0,0,.8)}.featherlight:before{content:'';display:inline-block;height:100%;vertical-align:middle}.featherlight .featherlight-content{position:relative;text-align:left;vertical-align:middle;display:inline-block;overflow:auto;padding:25px 25px 0;border-bottom:25px solid transparent;margin-left:5%;margin-right:5%;max-height:95%;background:#fff;cursor:auto;white-space:normal}.featherlight .featherlight-inner{display:block}.featherlight .featherlight-close-icon{position:absolute;z-index:9999;top:0;right:0;line-height:25px;width:25px;cursor:pointer;text-align:center;font-family:Arial,sans-serif;background:#fff;background:rgba(255,255,255,.3);color:#000;border:0;padding:0}.featherlight .featherlight-close-icon::-moz-focus-inner{border:0;padding:0}.featherlight .featherlight-image{width:100%}.featherlight-iframe .featherlight-content{border-bottom:0;padding:0;-webkit-overflow-scrolling:touch;overflow-y:scroll}.featherlight iframe{border:0}.featherlight *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}@media only screen and (max-width:1024px){.featherlight .featherlight-content{margin-left:0;margin-right:0;max-height:98%;padding:10px 10px 0;border-bottom:10px solid transparent}} -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.1) 5 | public_suffix (>= 2.0.2, < 6.0) 6 | colorator (1.1.0) 7 | concurrent-ruby (1.1.10) 8 | ffi (1.9.25) 9 | ffi (1.9.25-x64-mingw32) 10 | forwardable-extended (2.6.0) 11 | jekyll (3.6.3) 12 | addressable (~> 2.4) 13 | colorator (~> 1.0) 14 | jekyll-sass-converter (~> 1.0) 15 | jekyll-watch (~> 1.1) 16 | kramdown (~> 1.14) 17 | liquid (~> 4.0) 18 | mercenary (~> 0.3.3) 19 | pathutil (~> 0.9) 20 | rouge (>= 1.7, < 3) 21 | safe_yaml (~> 1.0) 22 | jekyll-sass-converter (1.5.2) 23 | sass (~> 3.4) 24 | jekyll-watch (1.5.1) 25 | listen (~> 3.0) 26 | kramdown (1.17.0) 27 | liquid (4.0.1) 28 | listen (3.1.5) 29 | rb-fsevent (~> 0.9, >= 0.9.4) 30 | rb-inotify (~> 0.9, >= 0.9.7) 31 | ruby_dep (~> 1.2) 32 | mercenary (0.3.6) 33 | pathutil (0.16.1) 34 | forwardable-extended (~> 2.6) 35 | public_suffix (5.0.0) 36 | rb-fsevent (0.10.3) 37 | rb-inotify (0.9.10) 38 | ffi (>= 0.5.0, < 2) 39 | rouge (2.2.1) 40 | ruby_dep (1.5.0) 41 | safe_yaml (1.0.4) 42 | sass (3.6.0) 43 | sass-listen (~> 4.0.0) 44 | sass-listen (4.0.0) 45 | rb-fsevent (~> 0.9, >= 0.9.4) 46 | rb-inotify (~> 0.9, >= 0.9.7) 47 | tzinfo (2.0.5) 48 | concurrent-ruby (~> 1.0) 49 | tzinfo-data (1.2018.7) 50 | tzinfo (>= 1.0.0) 51 | 52 | PLATFORMS 53 | ruby 54 | x64-mingw32 55 | 56 | DEPENDENCIES 57 | jekyll (= 3.6.3) 58 | tzinfo-data 59 | 60 | RUBY VERSION 61 | ruby 2.5.3p105 62 | 63 | BUNDLED WITH 64 | 1.17.1 65 | -------------------------------------------------------------------------------- /id7.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: ID7 Recovery v2 4 | permalink: /id7/ 5 | --- 6 | # **WARNING UPDATING TO V70.00.335+ REQUIRES A [SERIAL CONNECTION](/serial/#process) DURING THE UPDATE TO MAINTAIN ROOT ACCESS** 7 | 8 | #### **You will need: the "update.up" file, [ID7_Recovery_XX](https://github.com/Trevelopment/cmu-autorun/releases/download/1/XX.zip)**, Computer connected via serial connection, [Putty](https://www.putty.org/) or [SecureCRT](https://www.vandyke.com/products/securecrt/). 9 | - Copy the "XX" folder onto the USB drive along with the update file. 10 | - Make sure your serial console is working properly and start the update. You can leave the console running during the update. 11 | - When the update is finished the text will stop completely. After the update is complete, copy & paste this command: 12 | -

13 |       
14 | - Don't worry about the error messages and after a minute turn ACC off and on again. (Optinal: keep serial console running in case something went wrong) 15 | - Make a tweaks installer with AIO and test. If it works then you are done with the serial connection and can [clean up](/serial/#finishing-up) 16 | - If it does not work, keep the serial console open and try to login with **cmu/jci** and run `sh /mnt/data_persist/dev/bin/autorun`. 17 | 18 | -------------------------------------------------------------------------------- /mzdmeter.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /mzdmeter/ 4 | --- 5 | 6 | # MZD Meter 7 | 8 | **One day I received an email of these MZD Meter files** by a random person whom I did not know and offered very little information about them. The files did not include all the files needed to run the app nor did it include an install script. I took some time to get the app to actually work but many of the features/readings do not work correctly, some not at all. There are so many things going on in the app and it became difficult and tedious for me to debug/fix the app myself so I ask my fellow hackers in the community to take a look at the source code and attempt to get this app fully working, maybe even improve on it by. For instance presently only km/h is shown, to toggle between km/h and mph would be a great feature but the limits are really anything you can imagine. 9 | 10 | **To find the MZD Meter install/uninstall inside MZD-AIO-TI** just type `mzdmeter` (one word) into the 'Tweak Filter' text input field at the top right of the app. I know its not a very tough secret code to figure out but what are the chances that somebody actually uses that 'Tweak Filter' field AND types exactly that into it by accident? Not very high but if someone did, good for them, in that case they should find it. I only hide the app because of the amount of things that do not work and I'm hoping with the help of the community we can fix it and ultimately make it into something better. 11 | 12 | #### What is working for me: 13 | - Main Speedometer (km/h only) 14 | - Steering Wheel positon 15 | - Gear shift position 16 | - Trip time 17 | - The annoying beeping that alerts you that your wheels are not straight when parking. 18 | 19 | If you make any fixes/upgrades please email me @ [Trez@mazdatweaks.com](mailto:Trez@mazdatweaks.com?subject=MZD%20Meter%20Fix) 20 | -------------------------------------------------------------------------------- /stylesheets/normalize.css: -------------------------------------------------------------------------------- 1 | html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} 2 | -------------------------------------------------------------------------------- /js/totop.js: -------------------------------------------------------------------------------- 1 | var scrolltotop={setting:{startline:100,scrollto:0,scrollduration:1e3,fadeduration:[500,100]},controlHTML:'top',controlattrs:{offsetx:5,offsety:15},anchorkeyword:"#top",state:{isvisible:!1,shouldvisible:!1},scrollup:function(){this.$control.animate({opacity:0,bottom:"100%"},300);this.cssfixedsupport||this.$control.css({opacity:0});var t=isNaN(this.setting.scrollto)?this.setting.scrollto:parseInt(this.setting.scrollto);t="string"==typeof t&&1==jQuery("#"+t).length?jQuery("#"+t).offset().top:0,this.$body.animate({scrollTop:t},this.setting.scrollduration);this.$control.css({bottom:"100px"})},keepfixed:function(){var t=jQuery(window),o=t.scrollLeft()+t.width()-this.$control.width()-this.controlattrs.offsetx,s=t.scrollTop()+t.height()-this.$control.height()-this.controlattrs.offsety;this.$control.animate({left:o+"px",top:s+"px"})},togglecontrol:function(){var t=jQuery(window).scrollTop();this.cssfixedsupport||this.keepfixed(),this.state.shouldvisible=t>=this.setting.startline?!0:!1,this.state.shouldvisible&&!this.state.isvisible?(this.$control.stop().animate({opacity:1},this.setting.fadeduration[0]),this.state.isvisible=!0):0==this.state.shouldvisible&&this.state.isvisible&&(this.$control.stop().animate({opacity:0,bottom:"15px"},this.setting.fadeduration[1]),this.state.isvisible=!1)},init:function(){jQuery(document).ready(function(t){var o=scrolltotop,s=document.all;o.cssfixedsupport=!s||s&&"CSS1Compat"==document.compatMode&&window.XMLHttpRequest,o.$body=t(window.opera?"CSS1Compat"==document.compatMode?"html":"body":"html,body"),o.$control=t('
'+o.controlHTML+"
").css({position:o.cssfixedsupport?"fixed":"absolute",bottom:o.controlattrs.offsety,right:o.controlattrs.offsetx,opacity:0,cursor:"pointer"}).attr({title:"Scroll to Top"}).click(function(){return o.scrollup(),!1}).appendTo("body"),document.all&&!window.XMLHttpRequest&&""!=o.$control.text()&&o.$control.css({width:o.$control.width()}),o.togglecontrol(),t('a[href="'+o.anchorkeyword+'"]').click(function(){return o.scrollup(),!1}),t(window).bind("scroll resize",function(t){o.togglecontrol()})})}};scrolltotop.init(); -------------------------------------------------------------------------------- /screenshots.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | permalink: /screenshots/ 4 | order: 5 5 | images: 6 | - image_path: /images/slider/screenshot.jpg 7 | title: THEN v2.0 8 | - image_path: /images/slider/ver259.JPG 9 | title: AND NOW v2.5.9 10 | - image_path: /images/slider/Screenshot-ImageJoiner.jpg 11 | title: Image Joiner 12 | - image_path: /images/slider/boot-prev.jpg 13 | title: Boot Animation Preview 14 | - image_path: /images/slider/Screenshot-bgPrev.jpg 15 | title: Background Preview 16 | --- 17 | 18 | 19 |

Screenshots

20 |
THEN AND NOW
21 | 26 |

Trez's InfotainmentShots:

27 |
28 | 29 | Infotainment Screenshot 30 | Infotainment Screenshot 31 | Infotainment Screenshot 32 | Infotainment Screenshot 33 | Infotainment Screenshot 34 | Infotainment Screenshot 35 | Infotainment Screenshot 36 | Infotainment Screenshot 37 | Infotainment Screenshot 38 | Infotainment Screenshot 39 | Infotainment Screenshot 40 | Infotainment Screenshot 41 |
42 | -------------------------------------------------------------------------------- /speedo_changelog-5.5.md: -------------------------------------------------------------------------------- 1 | ## Speedometer Changelog (Since v5.5 before that it was 2 different speedometers) 2 | 3 | #### v5.5 4 | 5 | - Analog, Modded and Bar Speedometers are now All In One 6 | - All options are available and will be applied to the proper Speedometer 7 | - Choose which speedometer to start with by default (if starting with Bar Speedometer other options will still determine the starting state of the Classic Speedometer) 8 | - The speedometer-config.js file now has all the options, set a variable to determine if override values are used or installed options. 9 | - Invalid Values Show "---" Such As Gear Position/Lever for Manual Transmissions 10 | - Toggles will Show The Action In A Statusbar Notification 11 | - Hold "Up" on multicontroller to switch between Classic and Bar Speedometer Mode 12 | - Hold "Down" in Classic mode to switch between Basic and Modded Speedometer (Basic is only analog with no toggles except long holds to change to Modded or Bar Speedometer) 13 | - Modded Speedometer (in Classic mode): 14 | - Single click "Up" to increase size of values 15 | - Multicontroller "Select" toggles between Digital and Analog speed 16 | - Single click "Down" to show alternate values 17 | - Bar Speedometer: 18 | - Configure The Amount of Bottom Rows in "speedometer-config.js" (Default 4) 19 | - Hold "Down" to show/hide speed bar 20 | - **TAP Any 2 Values To Swap Their Positions!** 21 | - Any Values Can Be Swapped Even The Main 22 | - When The Main Value Is Swapped An SBN Will Show With The Value Name 23 | - Tap Below The Bottom Row To Swap Hidden Values In Other Rows 24 | - Tap Selected Value Again To Cancel 25 | 26 | #### v5.6 27 | 28 | - Bar Speedometer layout changes are remembered until shutdown 29 | - Exiting or changing speedometers no longer resets layout to default 30 | - Hold "Select" on the multicontroller to reset to your default layout 31 | - Change Between 5 Configurable Color Themes (hold.left) 32 | - Remap Multicontroller Functions [speedometer-controls.js](config/speedometer-controls.js) 33 | - All controls are able to be customized in speedometer-controls.js 34 | - Custom themes for bar speedometer with CSS (mostly colors but other CSS tweaks can be applied) 35 | - Set Colors In [barThemes.css](config/barThemes.css) 36 | -------------------------------------------------------------------------------- /css/prism.css: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.13.0 2 | http://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+bash */ 3 | /** 4 | * okaidia theme for JavaScript, CSS and HTML 5 | * Loosely based on Monokai textmate theme by http://www.monokai.nl/ 6 | * @author ocodia 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | color: #f8f8f2; 12 | background: none; 13 | text-shadow: 0 1px rgba(0, 0, 0, 0.3); 14 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | word-wrap: normal; 20 | line-height: 1.5; 21 | 22 | -moz-tab-size: 4; 23 | -o-tab-size: 4; 24 | tab-size: 4; 25 | 26 | -webkit-hyphens: none; 27 | -moz-hyphens: none; 28 | -ms-hyphens: none; 29 | hyphens: none; 30 | } 31 | 32 | /* Code blocks */ 33 | pre[class*="language-"] { 34 | padding: 1em; 35 | margin: .5em 0; 36 | overflow: auto; 37 | border-radius: 0.3em; 38 | } 39 | 40 | :not(pre) > code[class*="language-"], 41 | pre[class*="language-"] { 42 | background: #272822; 43 | } 44 | 45 | /* Inline code */ 46 | :not(pre) > code[class*="language-"] { 47 | padding: .1em; 48 | border-radius: .3em; 49 | white-space: normal; 50 | } 51 | 52 | .token.comment, 53 | .token.prolog, 54 | .token.doctype, 55 | .token.cdata { 56 | color: slategray; 57 | } 58 | 59 | .token.punctuation { 60 | color: #f8f8f2; 61 | } 62 | 63 | .namespace { 64 | opacity: .7; 65 | } 66 | 67 | .token.property, 68 | .token.tag, 69 | .token.constant, 70 | .token.symbol, 71 | .token.deleted { 72 | color: #f92672; 73 | } 74 | 75 | .token.boolean, 76 | .token.number { 77 | color: #ae81ff; 78 | } 79 | 80 | .token.selector, 81 | .token.attr-name, 82 | .token.string, 83 | .token.char, 84 | .token.builtin, 85 | .token.inserted { 86 | color: #a6e22e; 87 | } 88 | 89 | .token.operator, 90 | .token.entity, 91 | .token.url, 92 | .language-css .token.string, 93 | .style .token.string, 94 | .token.variable { 95 | color: #f8f8f2; 96 | } 97 | 98 | .token.atrule, 99 | .token.attr-value, 100 | .token.function { 101 | color: #e6db74; 102 | } 103 | 104 | .token.keyword { 105 | color: #66d9ef; 106 | } 107 | 108 | .token.regex, 109 | .token.important { 110 | color: #fd971f; 111 | } 112 | 113 | .token.important, 114 | .token.bold { 115 | font-weight: bold; 116 | } 117 | .token.italic { 118 | font-style: italic; 119 | } 120 | 121 | .token.entity { 122 | cursor: help; 123 | } 124 | 125 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 | 7 | 8 |
9 | {% include icon-github.html username=site.github_username username2=site.github_username github=site.project_page %} 10 |
11 | 12 |
13 | 34 | 35 | 36 | 37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 61 | 62 | -------------------------------------------------------------------------------- /sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | https://mazdatweaks.com 6 | 2018-01-20 7 | monthly 8 | 1.0 9 | 10 | 11 | https://mazdatweaks.com/ 12 | 2018-01-20 13 | monthly 14 | 1.0 15 | 16 | 17 | https://mazdatweaks.com/faq/ 18 | 2018-01-20 19 | monthly 20 | 1.0 21 | 22 | 23 | https://mazdatweaks.com/changelog2/ 24 | 2018-01-20 25 | monthly 26 | 1.0 27 | 28 | 29 | https://mazdatweaks.com/androidauto/ 30 | 2018-01-20 31 | monthly 32 | 1.0 33 | 34 | 35 | https://mazdatweaks.com/screenshots 36 | 2018-01-20 37 | monthly 38 | 1.0 39 | 40 | 41 | https://mazdatweaks.com/videoplayer 42 | 2018-01-20 43 | monthly 44 | 1.0 45 | 46 | 47 | https://mazdatweaks.com/speedo 48 | 2018-01-20 49 | monthly 50 | 1.0 51 | 52 | 53 | https://mazdatweaks.com/castscreen 54 | 2018-01-20 55 | monthly 56 | 1.0 57 | 58 | 59 | https://mazdatweaks.com/androidauto 60 | 2018-01-20 61 | monthly 62 | 1.0 63 | 64 | 65 | https://mazdatweaks.com/changelog2 66 | 2018-01-20 67 | monthly 68 | 1.0 69 | 70 | 71 | https://mazdatweaks.com/faq 72 | 2018-01-20 73 | monthly 74 | 1.0 75 | 76 | 77 | https://mazdatweaks.com/feed.xml 78 | 2018-01-20 79 | monthly 80 | 1.0 81 | 82 | 83 | https://mazdatweaks.com/changelog 84 | 2018-01-20 85 | monthly 86 | 1.0 87 | 88 | -------------------------------------------------------------------------------- /casdk.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | 8 |
CASDK Written By: Flyandi
9 |
Integration Into AIO By: Trezdog44
10 | npm package 11 |
12 |
13 |

CASDK

Is a very exciting addition to AIO and opens the door to many possibilities. Developers can use the npm package "casdk" to create a ready-to-go app template in seconds. Using JavaScript and CSS, developers can easily build amazing apps on 14 | the CASDK framework. 15 |
16 |
17 |
18 |

The Custom Application SDK for Mazda Infotainment System is a micro framework that allows you to write and deploy custom applications which integrate natively into the existing JCI framework without hassle. This version of CASDK is integrated with AIO 19 | to create a unique framework with endless app posibilities.

20 |
21 | 22 |
23 |
CASDK comes with:
24 |
  • 25 | CASDK Proxy - Proxy registers both CASDK and AIO apps and replaces "additionalApps.js".
  • 26 |
  • 27 | Custom Application Runtime - A microframework that handles the custom applications during runtime.
  • 28 |
  • 29 | Data Readers - Poll vehicle data an certain intervals (1s, 60s, & 300s)
  • 30 |
  • 31 | JS logging - JavaScript (and CSS) console log is written to /tmp/root/casdk-error.log
  • 32 |
  • 33 | LocalStorage - Moves the save locaton of localStorage to /tmp/mnt/data_persist/storage/
  • 34 |
  • 35 | NodeJS - Powerful Server-side JavaScript.
  • 36 |
  • 37 | ADB - Android Debug Bridge for Android devices.
  • 38 |
  • 39 | Custom Applications - Apps that run on the CASDK framework
  • 40 | CASDK Framework and Apps are installed internally to the 'resources' partition by default, optinally CASDK apps can be run from an SD Card. 41 |
    Native apps such as those installed with AIO will run on the CASDK framework although apps are installed differently with CASDK. The AIO Tweak installer will detect if CASDK is installed when running tweaks and adjust the installation accordingly but 42 | older app installers will not work while CASDK is installed.
    43 |
    44 |
    The CASDK framework was originally designed to be run entirely from an SD card. With AIO the framework and apps are installed onto system disk so that apps will be able to run without an SD Card connected. CASDK apps can still be run from an SD card by 45 | selecting the option below. If the SD card is connected during installation, AIO will offer to install the apps directly to the SD card. Apps can also be installed by copying the app folder to "/apps" on the root of the SD Card. Also, the name of the 46 | app folder needs to be added to "/apps/apps.js." Using this method any CASDK app can be used even one you have developed yourself!
    47 |
    48 |
    49 | -------------------------------------------------------------------------------- /js/featherlight.gallery.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Featherlight Gallery – an extension for the ultra slim jQuery lightbox 3 | * Version 1.7.1 - http://noelboss.github.io/featherlight/ 4 | * 5 | * Copyright 2017, Noël Raoul Bossart (http://www.noelboss.com) 6 | * MIT Licensed. 7 | **/!function(a){"use strict";function b(c,d){if(!(this instanceof b)){var e=new b(a.extend({$source:c,$currentTarget:c.first()},d));return e.open(),e}a.featherlight.apply(this,arguments),this.chainCallbacks(h)}var c=function(a){window.console&&window.console.warn&&window.console.warn("FeatherlightGallery: "+a)};if("undefined"==typeof a)return c("Too much lightness, Featherlight needs jQuery.");if(!a.featherlight)return c("Load the featherlight plugin before the gallery plugin");var d="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,e=a.event&&a.event.special.swipeleft&&a,f=window.Hammer&&function(a){var b=new window.Hammer.Manager(a[0]);return b.add(new window.Hammer.Swipe),b},g=d&&(e||f);d&&!g&&c("No compatible swipe library detected; one must be included before featherlightGallery for swipe motions to navigate the galleries.");var h={afterClose:function(a,b){var c=this;return c.$instance.off("next."+c.namespace+" previous."+c.namespace),c._swiper&&(c._swiper.off("swipeleft",c._swipeleft).off("swiperight",c._swiperight),c._swiper=null),a(b)},beforeOpen:function(a,b){var c=this;return c.$instance.on("next."+c.namespace+" previous."+c.namespace,function(a){var b="next"===a.type?1:-1;c.navigateTo(c.currentNavigation()+b)}),g&&(c._swiper=g(c.$instance).on("swipeleft",c._swipeleft=function(){c.$instance.trigger("next")}).on("swiperight",c._swiperight=function(){c.$instance.trigger("previous")}),c.$instance.addClass(this.namespace+"-swipe-aware",g)),c.$instance.find("."+c.namespace+"-content").append(c.createNavigation("previous")).append(c.createNavigation("next")),a(b)},beforeContent:function(a,b){var c=this.currentNavigation(),d=this.slides().length;return this.$instance.toggleClass(this.namespace+"-first-slide",0===c).toggleClass(this.namespace+"-last-slide",c===d-1),a(b)},onKeyUp:function(a,b){var c={37:"previous",39:"next"}[b.keyCode];return c?(this.$instance.trigger(c),!1):a(b)}};a.featherlight.extend(b,{autoBind:"[data-featherlight-gallery]"}),a.extend(b.prototype,{previousIcon:"◀",nextIcon:"▶",galleryFadeIn:100,galleryFadeOut:300,slides:function(){return this.filter?this.$source.find(this.filter):this.$source},images:function(){return c("images is deprecated, please use slides instead"),this.slides()},currentNavigation:function(){return this.slides().index(this.$currentTarget)},navigateTo:function(b){var c=this,d=c.slides(),e=d.length,f=c.$instance.find("."+c.namespace+"-inner");return b=(b%e+e)%e,c.$currentTarget=d.eq(b),c.beforeContent(),a.when(c.getContent(),f.fadeTo(c.galleryFadeOut,.2)).always(function(a){c.setContent(a),c.afterContent(),a.fadeTo(c.galleryFadeIn,1)})},createNavigation:function(b){var c=this;return a(''+this[b+"Icon"]+"").click(function(){a(this).trigger(b+"."+c.namespace)})}}),a.featherlightGallery=b,a.fn.featherlightGallery=function(a){return b.attach(this,a),this},a(document).ready(function(){b._onReady()})}(jQuery); -------------------------------------------------------------------------------- /ProTipsDraft.md: -------------------------------------------------------------------------------- 1 | # MZD-AIO-TI PRO Tips 2 | *** 3 | ### WARNING: These are called 'Pro Tips' for a reason. I take no responsibility for the missuse of any of these instructions. If you are going to attempt anything on your car system you should have the proper knowlege and experience to recover if something were to go wrong. 4 | ___ 5 | ## SSH 6 | **SSH ACCESS IS THE MOST IMPORTANT TOOL FOR DEVELOPMENT ON THE MZD INFOTAINMENT SYSTEM.** 7 | #### The are 3 main ways to gain SSH access: 8 | - USB-Ethernet Adapter 9 | - Wifi 10 | - SSH over ADB (Android Phone) 11 | 12 | In FW v56.00.5XX+ SSH access was disabled, It can be re-enabled with AIO 13 | 14 | After restoring SSH you root user/pass will be cmu/jci. With AIO a second root user/pass is added: jci/jci 15 | ##### *Why?* 16 | I wanted to make a definitive way that AIO could recognize that it had previously modified the passwd file. Since we do not want to put any erroneous information into that file a user in the Mazda3Revolution Forum suggested to rename the existing cmu (or root) user (with unknown password) to jci and add the new cmu user above that (making it the new root user). That would work except the jci user would be useless since we don't know the password, solution: create a new jci/jci user/pass and add in place of the original giving us a unique user that can be easily checked programmatically and is usable for SSH access. 17 | 18 | I will post a tutorial on how to add any user/pass combination to the passwd file to be used for SSH access, at the moment I have 4 root users: cmu, jci, root, and trez (all my passwords are jci for simplicity but you can make them anything). I would remove the root user name if I was going to perform a firmware update and my other 3 root users would persist through the update. 19 | THIS IS NOT THE ONLY WAY, THE EASIEST WAY, OR EVEN THE BEST WAY TO DO THIS. IT IS JUST A WAY TO DO IT. 20 | Using Ubuntu(16.04): 21 | 22 | | Open the terminal and type the commands `sudo adduser usr` set password to jci and you can skip the rest. Note that you can set the username and password to anything you want. | [![adduser](/images/adduser1.jpg)](/images/adduser1.jpg) | 23 | | :--- | :---: | 24 | | Command: `sudo cat /etc/shadow` will print out the password file and the last line will be the user you just added. Copy up to the **2nd : (Second Colon)** | [![adduser](/images/adduser2.jpg)](/images/adduser2.jpg) | 25 | | In AIO choose SSH_Bringback with the option Force Update SSH | [![adduser](/images/adduser3.jpg)](/images/adduser3.jpg) | 26 | | Open _copy_to_usb or your USB drive and navigate to `config/ssh_bringback/` and open the file `passwd` with a text editor such as notepad++. add the user and password copied from step 2 under the jci user and add `:0:0:root:/root:/bin/sh` to the end. **NOTE: Make sure your editor does not add a newline to the end of the file when saving or it may not work correctly. Also make sure line endings are Unix style (EOL = LF)** | [![adduser](/images/adduser4.jpg)](/images/adduser4.jpg) | 27 | 28 | [![adduser](/images/adduser5.jpg)](/images/adduser5.jpg) 29 | 30 | ___ 31 | *** 32 | ## Next Time: How to run Android Auto in a Ubuntu virtual machine 33 | {% include_relative AA.html %} 34 | 35 | [Electron]: (http://electron.atom.io/) 36 | [AngularJS]: (https://angularjs.org/) 37 | [MazdaTweaks.com]:(http://mazdatweaks.com/) 38 | [NodeJS]: (https://nodejs.org/) 39 | [Chromium]: (https://www.chromium.org/) 40 | [1]: (https://github.com/Siutsch/AIO---All-in-one-tweaks) 41 | -------------------------------------------------------------------------------- /_sass/_syntax-highlighting.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Syntax highlighting styles 3 | */ 4 | .highlight { 5 | background: #fff; 6 | @extend %vertical-rhythm; 7 | 8 | .highlighter-rouge & { 9 | background: #000; 10 | } 11 | 12 | .c { color: #998; font-style: italic } // Comment 13 | .err { color: #a61717; background-color: #e3d2d2 } // Error 14 | .k { font-weight: bold } // Keyword 15 | .o { font-weight: bold } // Operator 16 | .cm { color: #998; font-style: italic } // Comment.Multiline 17 | .cp { color: #999; font-weight: bold } // Comment.Preproc 18 | .c1 { color: #998; font-style: italic } // Comment.Single 19 | .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special 20 | .gd { color: #000; background-color: #fdd } // Generic.Deleted 21 | .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific 22 | .ge { font-style: italic } // Generic.Emph 23 | .gr { color: #a00 } // Generic.Error 24 | .gh { color: #999 } // Generic.Heading 25 | .gi { color: #000; background-color: #dfd } // Generic.Inserted 26 | .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific 27 | .go { color: #888 } // Generic.Output 28 | .gp { color: #555 } // Generic.Prompt 29 | .gs { font-weight: bold } // Generic.Strong 30 | .gu { color: #aaa } // Generic.Subheading 31 | .gt { color: #a00 } // Generic.Traceback 32 | .kc { font-weight: bold } // Keyword.Constant 33 | .kd { font-weight: bold } // Keyword.Declaration 34 | .kp { font-weight: bold } // Keyword.Pseudo 35 | .kr { font-weight: bold } // Keyword.Reserved 36 | .kt { color: #458; font-weight: bold } // Keyword.Type 37 | .m { color: #099 } // Literal.Number 38 | .s { color: #d14 } // Literal.String 39 | .na { color: #008080 } // Name.Attribute 40 | .nb { color: #0086B3 } // Name.Builtin 41 | .nc { color: #458; font-weight: bold } // Name.Class 42 | .no { color: #008080 } // Name.Constant 43 | .ni { color: #800080 } // Name.Entity 44 | .ne { color: #900; font-weight: bold } // Name.Exception 45 | .nf { color: #900; font-weight: bold } // Name.Function 46 | .nn { color: #555 } // Name.Namespace 47 | .nt { color: #000080 } // Name.Tag 48 | .nv { color: #008080 } // Name.Variable 49 | .ow { font-weight: bold } // Operator.Word 50 | .w { color: #bbb } // Text.Whitespace 51 | .mf { color: #099 } // Literal.Number.Float 52 | .mh { color: #099 } // Literal.Number.Hex 53 | .mi { color: #099 } // Literal.Number.Integer 54 | .mo { color: #099 } // Literal.Number.Oct 55 | .sb { color: #d14 } // Literal.String.Backtick 56 | .sc { color: #d14 } // Literal.String.Char 57 | .sd { color: #d14 } // Literal.String.Doc 58 | .s2 { color: #d14 } // Literal.String.Double 59 | .se { color: #d14 } // Literal.String.Escape 60 | .sh { color: #d14 } // Literal.String.Heredoc 61 | .si { color: #d14 } // Literal.String.Interpol 62 | .sx { color: #d14 } // Literal.String.Other 63 | .sr { color: #009926 } // Literal.String.Regex 64 | .s1 { color: #d14 } // Literal.String.Single 65 | .ss { color: #990073 } // Literal.String.Symbol 66 | .bp { color: #999 } // Name.Builtin.Pseudo 67 | .vc { color: #008080 } // Name.Variable.Class 68 | .vg { color: #008080 } // Name.Variable.Global 69 | .vi { color: #008080 } // Name.Variable.Instance 70 | .il { color: #099 } // Literal.Number.Integer.Long 71 | } 72 | -------------------------------------------------------------------------------- /_sass/_base.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Reset some basic elements 3 | */ 4 | body, h1, h2, h3, h4, h5, h6, 5 | p, blockquote, pre, hr, 6 | dl, dd, ol, ul, figure { 7 | margin: 0; 8 | padding: 0; 9 | } 10 | 11 | 12 | 13 | /** 14 | * Basic styling 15 | */ 16 | body { 17 | font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; 18 | color: $text-color; 19 | background-color: $background-color; 20 | -webkit-text-size-adjust: 100%; 21 | -webkit-font-feature-settings: "kern" 1; 22 | -moz-font-feature-settings: "kern" 1; 23 | -o-font-feature-settings: "kern" 1; 24 | font-feature-settings: "kern" 1; 25 | font-kerning: normal; 26 | } 27 | 28 | 29 | 30 | /** 31 | * Set `margin-bottom` to maintain vertical rhythm 32 | */ 33 | h1, h2, h3, h4, h5, h6, 34 | p, blockquote, pre, 35 | ul, ol, dl, figure, 36 | %vertical-rhythm { 37 | margin-bottom: $spacing-unit / 2; 38 | } 39 | 40 | 41 | 42 | /** 43 | * Images 44 | */ 45 | img { 46 | max-width: 100%; 47 | vertical-align: middle; 48 | } 49 | 50 | 51 | 52 | /** 53 | * Figures 54 | */ 55 | figure > img { 56 | display: block; 57 | } 58 | 59 | figcaption { 60 | font-size: $small-font-size; 61 | } 62 | 63 | 64 | 65 | /** 66 | * Lists 67 | */ 68 | ul, ol { 69 | margin-left: $spacing-unit; 70 | } 71 | 72 | li { 73 | > ul, 74 | > ol { 75 | margin-bottom: 0; 76 | } 77 | } 78 | 79 | 80 | 81 | /** 82 | * Headings 83 | */ 84 | h1, h2, h3, h4, h5, h6 { 85 | font-weight: $base-font-weight; 86 | } 87 | 88 | 89 | 90 | /** 91 | * Links 92 | */ 93 | a { 94 | color: $brand-color; 95 | text-decoration: none; 96 | 97 | &:visited { 98 | color: darken($brand-color, 15%); 99 | } 100 | 101 | &:hover { 102 | color: $text-color; 103 | text-decoration: underline; 104 | } 105 | } 106 | 107 | 108 | 109 | /** 110 | * Blockquotes 111 | */ 112 | blockquote { 113 | color: $grey-color; 114 | border-left: 4px solid $grey-color-light; 115 | padding-left: $spacing-unit / 2; 116 | font-size: 18px; 117 | letter-spacing: -1px; 118 | font-style: italic; 119 | 120 | > :last-child { 121 | margin-bottom: 0; 122 | } 123 | } 124 | 125 | 126 | 127 | /** 128 | * Code formatting 129 | */ 130 | pre, 131 | code { 132 | font-size: 15px; 133 | border: 1px solid $grey-color-light; 134 | border-radius: 3px; 135 | background-color: #eef; 136 | } 137 | 138 | code { 139 | padding: 1px 5px; 140 | } 141 | 142 | pre { 143 | padding: 8px 12px; 144 | overflow-x: auto; 145 | 146 | > code { 147 | border: 0; 148 | padding-right: 0; 149 | padding-left: 0; 150 | } 151 | } 152 | 153 | 154 | 155 | /** 156 | * Wrapper 157 | */ 158 | .wrapper { 159 | max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2)); 160 | max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); 161 | margin-right: auto; 162 | margin-left: auto; 163 | padding-right: $spacing-unit; 164 | padding-left: $spacing-unit; 165 | @extend %clearfix; 166 | 167 | @include media-query($on-laptop) { 168 | max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); 169 | max-width: calc(#{$content-width} - (#{$spacing-unit})); 170 | padding-right: $spacing-unit / 2; 171 | padding-left: $spacing-unit / 2; 172 | } 173 | } 174 | 175 | 176 | 177 | /** 178 | * Clearfix 179 | */ 180 | %clearfix { 181 | 182 | &:after { 183 | content: ""; 184 | display: table; 185 | clear: both; 186 | } 187 | } 188 | 189 | 190 | 191 | /** 192 | * Icons 193 | */ 194 | .icon { 195 | 196 | > svg { 197 | display: inline-block; 198 | width: 16px; 199 | height: 16px; 200 | vertical-align: middle; 201 | 202 | path { 203 | fill: $grey-color; 204 | } 205 | } 206 | } 207 | -------------------------------------------------------------------------------- /casdk.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /casdk/ 4 | title: CASDK 5 | side_menu: true 6 | top_menu: true 7 | category: casdk 8 | --- 9 | 10 | 13 |
    CASDK Written By: Flyandi [Github](https://github.com/flyandi/mazda-custom-application-sdk) | [casdk npm package](https://www.npmjs.com/package/casdk)
    14 | 15 |
    Integration Into AIO By: Trezdog44 [Github](https://github.com/Trevelopment/MZD-AIO)
    16 |
    17 |
    18 |

    CASDK

    Is a very exciting addition to AIO and opens the door to many possibilities. Developers can use the npm package "casdk" to create a ready-to-go app template in seconds. Using JavaScript and CSS, developers can easily build amazing apps on 19 | the CASDK framework. 20 |
    21 | 22 |
    23 |

    The Custom Application SDK for Mazda Infotainment System is a micro framework that allows you to write and deploy custom applications which integrate natively into the existing JCI framework without hassle. This version of CASDK is integrated with AIO 24 | to create a unique framework with endless app possibilities.

    25 | 27 | 30 |
    31 |
    CASDK comes with:
    32 | - **CASDK Proxy** - Proxy registers both CASDK and AIO apps and replaces "additionalApps.js". 33 | - **Custom Application Runtime** - A microframework that handles the custom applications during runtime. 34 | - **Data Readers** - Poll vehicle data an certain intervals (1s, 60s, & 300s) 35 | - **JS logging** - JavaScript (and CSS) console log is written to /tmp/root/casdk-error.log 36 | - **LocalStorage** - Moves the save location of localStorage to /tmp/mnt/data_persist/storage/ 37 | - **NodeJS** - Powerful Server-side JavaScript. 38 | - **ADB** - Android Debug Bridge for Android devices. 39 | - **Custom Applications** - Apps that run on the CASDK framework 40 | - **With AIO + CASDK The Framework and Apps are installed internally to the `/resources/` partition by default, optionally CASDK apps can be run from an SD Card.** 41 | Native apps such as those installed with AIO will run on the CASDK framework although apps are installed differently with CASDK. The AIO Tweak installer will detect if CASDK is installed when running tweaks and adjust the installation accordingly but 42 | older app installers will not work while CASDK is installed. 43 | 44 |
    The CASDK framework was originally designed to be run entirely from an SD card. With AIO the framework and apps are installed onto system disk so that apps will be able to run without an SD Card connected. CASDK apps can still be run from an SD card by 45 | selecting the option below. If the SD card is connected during installation, AIO will offer to install the apps directly to the SD card. Apps can also be installed by copying the app folder to "/apps" on the root of the SD Card. Also, the name of the 46 | app folder needs to be added to "/apps/apps.js." Using this method any CASDK app can be used even one you have developed yourself! 47 | 48 | ### AIO Codes for CASDK Apps: 49 | 50 |

    Eventually all the codes will be here so that you can pick CASDK apps are available in AIO.

    51 |
    52 | {% for post in site.categories[page.category] %} 53 | 54 | 56 | {% endfor %} 57 |
    58 | 63 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 17 | 18 | {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 62 | 63 | -------------------------------------------------------------------------------- /ProTips.md: -------------------------------------------------------------------------------- 1 | 2 | # MZD-AIO-TI PRO Tips 3 | *** 4 | ### WARNING: These are called 'Pro Tips' for a reason, I take no responsibility for the misuse of any of these instructions. They are provided for informational purposes only, if you are going to attempt making any modifications to your vehicle's Infotainment System you should have the proper knowledge and experience to recover if something were to go wrong. 5 | ___ 6 | ## SSH 7 | **SSH ACCESS IS THE MOST IMPORTANT TOOL FOR DEVELOPMENT ON THE MZD INFOTAINMENT SYSTEM.** 8 | #### The are 3 main ways to gain SSH access: 9 | - USB-Ethernet Adapter 10 | - Wifi 11 | - SSH over ADB (Android Debug Bridge) 12 | 13 | In FW v56.00.5XX+ SSH access was disabled, It can be re-enabled with AIO 14 | 15 | After restoring SSH your root user/pass will be cmu/jci. With AIO a second root user/pass is added: jci/jci 16 | ##### *Why?* 17 | > I wanted to make a definitive way that AIO could recognize that it had previously modified the passwd file. Since we do not want to put any erroneous information into that file, a user in the Mazda3Revolution Forum suggested to rename the existing cmu (or root) user (with unknown password) to jci and add the new cmu user above that (making it the new root user). That would work except the jci user would be useless since we don't know the password, solution: create a new jci/jci user/pass and add in place of the original giving us a unique user that can be easily checked programmatically and is usable for SSH access. 18 | 19 | Any properly hashed user/pass combination can be added to the passwd file and used for SSH access, at the moment I have 4 root users: cmu, jci, root, and trez (all my passwords are jci for simplicity but you can make them anything). If I was going to perform a firmware update I would remove the root user name and my other 3 root users would persist through the update. There are many ways to create a hashed value including SHA-256, SHA-512, and crypt. 20 | 21 | How to make a user/pass using Ubuntu(16.04): 22 | 23 | | :--- | :---: | 24 | | Open the terminal and type the commands `sudo adduser usr` set password and you can skip the rest. Use the command: `sudo cat /etc/shadow` to print out the password file and the last line will be the usr you just added. Copy up to the **2nd : (Second Colon)** [![adduser](/images/adduser2.jpg)](/images/adduser2.jpg) In AIO choose SSH_Bringback with the option Force Update SSH. Open _copy_to_usb or your USB drive and navigate to `config/ssh_bringback/` and open the file `passwd` with a text editor such as notepad++. add the user and password copied from step 2 under the jci user and add `:0:0:root:/root:/bin/sh` to the end. **NOTE: Make sure your editor does not add a newline to the end of the file when saving or it may not work correctly. Also make sure line endings are Unix style (EOL = LF)** [![adduser](/images/adduser4.jpg)](/images/adduser4.jpg) There are other commands such as `echo -n password | sha256sum | awk '{print $1}'` for an sha256 hash or you can substitute with `sha1sum` or `md5sum` for the corresponding hash. | [![adduser](/images/adduser1.jpg)](/images/adduser1.jpg) | 25 | | You can reuse a password hash for multiple users so if you just want password 'jci' you can enter a username and copy the rest from either users "cmu" or "jci". Here you can see the hashes used for "cmu" ($5 means SHA-256 hash), The hash I used for "jci" ($6 means SHA-512 hash), the original "root" user (using the original Unix hash called 'crypt') and my new user trez reusing the cmu user's password hash. In a computer system connected to the rest of the world reusing salt/hash values (and using the obsolete 'crypt' hashing method that was cracked by its creators in the 80s) is a huge security risk but since you have to be practically sitting inside the vehicle to connect, it isn't really an issue.| [![adduser](/images/adduser3.jpg)](/images/adduser3.jpg) | 26 | | In AIO choose SSH_Bringback with the option Force Update SSH. Open _copy_to_usb or your USB drive and navigate to `config/ssh_bringback/` and open the file `passwd` with a text editor such as notepad++. add the user and password copied from step 2 under the jci user and add `:0:0:root:/root:/bin/sh` to the end. **NOTE: Make sure your editor does not add a newline to the end of the file when saving or it may not work correctly. Also make sure line endings are Unix style (EOL = LF)** | | 27 | 28 | [![adduser](/images/adduser5.jpg)](/images/adduser5.jpg) 29 | 30 | ___ 31 | *** 32 | ## Next Time: How to run Android Auto in a Ubuntu virtual machine 33 | {% include_relative AA.html %} 34 | 35 | [Electron]: (http://electron.atom.io/) 36 | [AngularJS]: (https://angularjs.org/) 37 | [MazdaTweaks.com]:(http://mazdatweaks.com/) 38 | [NodeJS]: (https://nodejs.org/) 39 | [Chromium]: (https://www.chromium.org/) 40 | [1]: (https://github.com/Siutsch/AIO---All-in-one-tweaks) 41 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 19 | {% if page.title == "Changelog" %} 20 | 26 | 36 | {% endif %} 37 |
    38 | 82 | -------------------------------------------------------------------------------- /castscreen.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /castscreen/ 4 | --- 5 | 6 | # CastScreen-Receiver Troubleshooting 7 | 8 | --- 9 | To troubleshoot CastScreen-Receiver via SSH you just need to use the following commands. 10 | ```sh 11 | # Check if CastScreen Process is running 12 | ps | grep cs_receiver_arm 13 | 14 | # Kill CastScreen process 15 | killall cs_receiver_arm 16 | 17 | # Go to scripts folder 18 | cd /jci/scripts 19 | 20 | # Start Castscreen process (from scripts folder) 21 | ./cs_receiver_arm mfw_v4lsink & 22 | ``` 23 | 24 | What you need to do is connect via SSH, kill the CastScreen process, go to scripts folder, run the CastScreen process, switch to CastScreen app on your phone and hit start, then switch back to terminal and note the output with a screenshot or whatever. 25 | When I was running this to get screenshots for this tutorial it actually failed on me the first time. I got it going on the second try after unplugging the phone for 5 seconds then reconnecting to phone and SSH. Then it was running smooth. 26 | **Troubleshoot CastScreen via SSH:** 27 | 28 | | --- | --- | 29 | | - Check if the CastScreen process is running. Kill the process if it is running. | ![KILL](/images/ssh/SSH1.png) | 30 | | - Run the process in your terminal the switch to the CastScreen app and press start. | ![RUN](/images/ssh/SSH2.png) | 31 | | - Switch back to your terminal and note the output. In this image the CastScreen hit an error and failed. | ![ERR](/images/ssh/SSH3.png) | 32 | | - These are similar to the error messages thrown by the VideoPlayer. At this point I disconnect my phone for about 5-10 seconds, reconnect phone, and reconnect to SSH | ![ERR2](/images/ssh/SSH4.png) | 33 | | - Run the commands to kill, and launch CastScreen process and start casting with CastScreen App | ![REKILL](/images/ssh/SSH5.png) | 34 | | - Hopefully by now it works for you, if not repeat disconnecting, reconnection, killing and relaunching the process. You can also try: Rebooting phone, rebooting Infotainment System, removing other USB devices, removing Navigation SD Card, and reinstalling the CastScreen-Receiver in the car. | ![PASS](/images/ssh/SSH8.png) | 35 | 36 | --- 37 | If you are having issues with connecting to adb debugging mode. 38 | **Troubleshoot adb:** 39 | 40 | ```sh 41 | adb kill-server 42 | # disconnect your phone 43 | adb start-server 44 | # connect your phone try regular mode first then mtp then ptp if they don't work 45 | adb devices -l 46 | # you should get the authorization message and your phone serial number as the output, if it says unauthorized, run adb kill-server again 47 | ``` 48 | If you still can't get it to connect then Revoke USB Debugging Authorizations in developer options on your phone and reboot your phone and the Infotainment system and try again. 49 | 50 | --- 51 | ##### Another Troubleshooting Method By [Doog](//mazda3revolution.com/forums/2014-2017-mazda-3-skyactiv-audio-electronics/122458-aio-all-one-tweaks-379.html#post2054266 "Mazada3Revolution"): 52 | > It turned out that for me, with two different phones (Android 5.1 and Android 7.1.1) doing the following steps (in order) did the trick: 53 | 54 | 1) Connect the phone via USB 55 | 56 | 2) SSH into the car's CMU with your laptop/whatever. 57 | 58 | 3) Issue the following command at the prompt: 59 | `/jci/scripts/adb devices` 60 | It should show a device that says something like "unauthorized" next to it. If it doesn't that means it's not detecting your phone at all. If that's the case make sure USB debugging is on. If you do see "unauthorized" you can move on 61 | 62 | 4) Disconnect the phone from USB 63 | 64 | 5) For safety's sake (though I don't think this is necessary) do the following in Developer Options on your phone: 65 | - Turn off USB debugging 66 | - Revoke USB debugging authorizations 67 | - Turn off Verify apps over USB (other people report this is necessary, I'm not sure but it doesn't seem to harm anything) 68 | 69 | 6) Back to the SSH session. Issue the following commands: 70 | ```sh 71 | mount -o rw,remount / 72 | /jci/scripts/adb kill-server 73 | /jci/scripts/adb devices 74 | ``` 75 | 76 | > The first command allows you to write to the drive, the forward slash at the end (/) is really important. Don't forget that one. 77 | The last command shouldn't show anything because you haven't connected the USB device yet. This is just a check. 78 | 79 | 7) Plug in your phone to the USB cable again. You *might* get the USB debugging message at this point, though I think that happens when you launch Castscreen and start the program. 80 | 81 | 8) Launch Castscreen and use the following settings: 82 | - H264 83 | - 800x480@160 84 | - 1 Mbps 85 | - 127.0.0.1 86 | - Click Input Receiver 87 | - Now hit start. 88 | 89 | Definitely by this point you should get the "Allow USB Debugging" message. Allow it, and you should be able to start casting. 90 | 91 | 92 | After you cast once, you should probably reboot the system so that it goes back to read only mode. 93 | 94 | --- 95 | 102 | -------------------------------------------------------------------------------- /Speedometer_changelog.html: -------------------------------------------------------------------------------- 1 |
    
     2 | # Update to Waisky2’s addon-all-fixed-auto-install-v2
     3 | # V3.0 - Initial
     4 | # V3.2 - Removed temperatures that did not work right,
     5 | #        added trip fuel economy which is based on cmu trip which does not correspond to speedometer trip ,
     6 | #        changed so all data is rounded which fixed smdb-read speed mismatch to cruse control
     7 | #        enlarged direction text,
     8 | #        cleaned up code
     9 | # V3.21  changed metric display to L per 100km
    10 | #
    11 | # Changes done by diginix:
    12 | # V3.3   added unit under speedometer for mph or km/h
    13 | #        replace dot with comma for L per 100km
    14 | #        optimized speed indicator angles in css
    15 | #        new graphics for rings, needle pointer, dial image with different layout for steps 5,10,20
    16 | #        html and css cleanup
    17 | #        some more layout tuning (e.g. text shadow)
    18 | # V3.4   rotating compass added
    19 | # V3.5   GPS Heading deleted, Latitude & Longitude added
    20 | # V3.6   added analog top speed indicator
    21 | #        small animated GPS speed and direction added in statusbar (toggleable with touch on clock)
    22 | # V3.7   complete new method for data retrieval with websocket
    23 | #        added GPS Altitude min & max
    24 | #        added multilingual support (EN,DE,ES)
    25 | #        added Waisky2’s video player v2
    26 | # V4.0   integrated as native app in menu
    27 | #        new statusbar speedo without animation javascript (better performance)
    28 | #        alternating gps altitude and direction
    29 | # V4.1   added trip distance
    30 | #        added language Polish (thanks to sauron2003 from mazda3revolution.com)
    31 | #        added total fuel efficiency in brackets behind current one
    32 | #        added selection for fuel efficiency unit in user config
    33 | #        some layout improvements
    34 | #        merged some code improvements by vic_bam85
    35 | # V4.2   added readme.txt
    36 | #        added language Slovak (thanks to sedrik7 from mazda3revolution.com)
    37 | #        added language Turkish (thanks to volcano2K from mazda3revolution.com)
    38 | #        added tachometer for engine speed
    39 | #        added second idle time if engine is running but car has no speed (opposite to iStop time)
    40 | #        changed trip distance to 20 meter accuracy (0.02 km)
    41 | #        fixed statusbar speedo overlapping with message icon if 4 icons are visible (BT,WIFI,BATTERY,MESSAGE)
    42 | # V4.3   added percentage display of both idle times
    43 | #        added semi transparent background for value table
    44 | #        added user config for customizing of speedometer background image
    45 | #        added language French (thanks to drean179 and Regg001 from mazda3revolution.com)
    46 | 

    Speedometer Changelog (Since v5.5 before that it was 2 different speedometers)

    47 |

    v5.5

    48 |
      49 |
    • Analog, Modded and Bar Speedometers are now All In One
    • 50 |
    • All options are available and will be applied to the proper Speedometer
    • 51 |
    • Choose which speedometer to start with by default (if starting with Bar Speedometer other options will still determine the starting state of the Classic Speedometer)
    • 52 |
    • The speedometer-config.js file now has all the options, set a variable to determine if override values are used or installed options.
    • 53 |
    • Invalid Values Show "---" Such As Gear Position/Lever for Manual Transmissions
    • 54 |
    • Toggles will Show The Action In A Statusbar Notification
    • 55 |
    • Hold "Up" on multicontroller to switch between Classic and Bar Speedometer Mode
    • 56 |
    • Hold "Down" in Classic mode to switch between Basic and Modded Speedometer (Basic is only analog with no toggles except long holds to change to Modded or Bar Speedometer)
    • 57 |
    • Modded Speedometer (in Classic mode):
        58 |
      • Single click "Up" to increase size of values
      • 59 |
      • Multicontroller "Select" toggles between Digital and Analog speed
      • 60 |
      • Single click "Down" to show alternate values
      • 61 |
      62 |
    • 63 |
    • Bar Speedometer:
        64 |
      • Configure The Amount of Bottom Rows in "speedometer-config.js" (Default 4)
      • 65 |
      • Hold "Down" to show/hide speed bar
      • 66 |
      • TAP Any 2 Values To Swap Their Positions!
          67 |
        • Any Values Can Be Swapped Even The Main
        • 68 |
        • When The Main Value Is Swapped An SBN Will Show With The Value Name
        • 69 |
        • Tap Below The Bottom Row To Swap Hidden Values In Other Rows
        • 70 |
        • Tap Selected Value Again To Cancel
        • 71 |
        72 |
      • 73 |
      74 |
    • 75 |
    76 |

    v5.6

    77 |
      78 |
    • Bar Speedometer layout changes are remembered until shutdown
        79 |
      • Exiting or changing speedometers no longer resets layout to default
      • 80 |
      • Hold "Select" on the multicontroller to reset to your default layout
      • 81 |
      • Change Between 5 Configurable Color Themes (hold.left)
      • 82 |
      83 |
    • 84 |
    • Remap Multicontroller Functions speedometer-controls.js
        85 |
      • All controls are able to be customized in speedometer-controls.js
      • 86 |
      87 |
    • 88 |
    • Custom themes for bar speedometer with CSS (mostly colors but other CSS tweaks can be applied) 91 |
    • 92 |
    93 | -------------------------------------------------------------------------------- /_sass/_layout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Site header 3 | */ 4 | .site-header { 5 | border-top: 5px solid $grey-color-dark; 6 | border-bottom: 1px solid $grey-color-light; 7 | min-height: 56px; 8 | 9 | // Positioning context for the mobile navigation icon 10 | position: relative; 11 | } 12 | 13 | .site-title { 14 | font-size: 26px; 15 | font-weight: 300; 16 | line-height: 56px; 17 | letter-spacing: -1px; 18 | margin-bottom: 0; 19 | float: left; 20 | 21 | &, 22 | &:visited { 23 | color: $grey-color-dark; 24 | } 25 | } 26 | 27 | .site-nav { 28 | float: right; 29 | line-height: 56px; 30 | 31 | .menu-icon { 32 | display: none; 33 | } 34 | 35 | .page-link { 36 | color: $text-color; 37 | line-height: $base-line-height; 38 | 39 | // Gaps between nav items, but not on the last one 40 | &:not(:last-child) { 41 | margin-right: 20px; 42 | } 43 | } 44 | 45 | @include media-query($on-palm) { 46 | position: absolute; 47 | top: 9px; 48 | right: $spacing-unit / 2; 49 | background-color: $background-color; 50 | border: 1px solid $grey-color-light; 51 | border-radius: 5px; 52 | text-align: right; 53 | 54 | .menu-icon { 55 | display: block; 56 | float: right; 57 | width: 36px; 58 | height: 26px; 59 | line-height: 0; 60 | padding-top: 10px; 61 | text-align: center; 62 | 63 | > svg { 64 | width: 18px; 65 | height: 15px; 66 | 67 | path { 68 | fill: $grey-color-dark; 69 | } 70 | } 71 | } 72 | 73 | .trigger { 74 | clear: both; 75 | display: none; 76 | } 77 | 78 | &:hover .trigger { 79 | display: block; 80 | padding-bottom: 5px; 81 | } 82 | 83 | .page-link { 84 | display: block; 85 | padding: 5px 10px; 86 | 87 | &:not(:last-child) { 88 | margin-right: 0; 89 | } 90 | margin-left: 20px; 91 | } 92 | } 93 | } 94 | 95 | 96 | 97 | /** 98 | * Site footer 99 | */ 100 | .site-footer { 101 | border-top: 1px solid $grey-color-light; 102 | padding: $spacing-unit 0; 103 | } 104 | 105 | .footer-heading { 106 | font-size: 18px; 107 | margin-bottom: $spacing-unit / 2; 108 | } 109 | 110 | .contact-list, 111 | .social-media-list { 112 | list-style: none; 113 | margin-left: 0; 114 | } 115 | 116 | .footer-col-wrapper { 117 | font-size: 15px; 118 | color: $grey-color; 119 | margin-left: -$spacing-unit / 2; 120 | @extend %clearfix; 121 | } 122 | 123 | .footer-col { 124 | float: left; 125 | margin-bottom: $spacing-unit / 2; 126 | padding-left: $spacing-unit / 2; 127 | } 128 | 129 | .footer-col-1 { 130 | width: -webkit-calc(35% - (#{$spacing-unit} / 2)); 131 | width: calc(35% - (#{$spacing-unit} / 2)); 132 | } 133 | 134 | .footer-col-2 { 135 | width: -webkit-calc(20% - (#{$spacing-unit} / 2)); 136 | width: calc(20% - (#{$spacing-unit} / 2)); 137 | } 138 | 139 | .footer-col-3 { 140 | width: -webkit-calc(45% - (#{$spacing-unit} / 2)); 141 | width: calc(45% - (#{$spacing-unit} / 2)); 142 | } 143 | 144 | @include media-query($on-laptop) { 145 | .footer-col-1, 146 | .footer-col-2 { 147 | width: -webkit-calc(50% - (#{$spacing-unit} / 2)); 148 | width: calc(50% - (#{$spacing-unit} / 2)); 149 | } 150 | 151 | .footer-col-3 { 152 | width: -webkit-calc(100% - (#{$spacing-unit} / 2)); 153 | width: calc(100% - (#{$spacing-unit} / 2)); 154 | } 155 | } 156 | 157 | @include media-query($on-palm) { 158 | .footer-col { 159 | float: none; 160 | width: -webkit-calc(100% - (#{$spacing-unit} / 2)); 161 | width: calc(100% - (#{$spacing-unit} / 2)); 162 | } 163 | } 164 | 165 | 166 | 167 | /** 168 | * Page content 169 | */ 170 | .page-content { 171 | padding: $spacing-unit 0; 172 | } 173 | 174 | .page-heading { 175 | font-size: 20px; 176 | } 177 | 178 | .post-list { 179 | margin-left: 0; 180 | list-style: none; 181 | 182 | > li { 183 | margin-bottom: $spacing-unit; 184 | } 185 | } 186 | 187 | .post-meta { 188 | font-size: $small-font-size; 189 | color: $grey-color; 190 | } 191 | 192 | .post-link { 193 | display: block; 194 | font-size: 24px; 195 | } 196 | 197 | 198 | 199 | /** 200 | * Posts 201 | */ 202 | .post-header { 203 | margin-bottom: $spacing-unit; 204 | } 205 | 206 | .post-title { 207 | font-size: 42px; 208 | letter-spacing: -1px; 209 | line-height: 1; 210 | 211 | @include media-query($on-laptop) { 212 | font-size: 36px; 213 | } 214 | } 215 | 216 | .post-content { 217 | margin-bottom: $spacing-unit; 218 | 219 | h2 { 220 | font-size: 32px; 221 | 222 | @include media-query($on-laptop) { 223 | font-size: 28px; 224 | } 225 | } 226 | 227 | h3 { 228 | font-size: 26px; 229 | 230 | @include media-query($on-laptop) { 231 | font-size: 22px; 232 | } 233 | } 234 | 235 | h4 { 236 | font-size: 20px; 237 | 238 | @include media-query($on-laptop) { 239 | font-size: 18px; 240 | } 241 | } 242 | } 243 | -------------------------------------------------------------------------------- /stylesheets/stylesheet.css: -------------------------------------------------------------------------------- 1 | *{box-sizing:border-box}body{padding:0;margin:0;font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;font-size:16px;line-height:1.5;color:#606c71}a{color:#1e6bb8;text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-block;margin-bottom:1rem;color:rgba(255, 255, 255, 0.7);background-color:rgba(255, 255, 255, 0.08);border-color:rgba(255, 255, 255, 0.2);border-style:solid;border-width:1px;border-radius:0.3rem;transition:color 0.2s, background-color 0.2s, border-color 0.2s}.btn + .btn{margin-left:1rem}.btn:hover{color:rgba(255, 255, 255, 0.8);text-decoration:none;background-color:rgba(255, 255, 255, 0.2);border-color:rgba(255, 255, 255, 0.3)}@media screen and (min-width: 64em){.btn{padding:0.75rem 1rem}}@media screen and (min-width: 42em) and (max-width: 64em){.btn{padding:0.6rem 0.9rem;font-size:0.9rem}}@media screen and (max-width: 42em){.btn{display:block;width:100%;padding:0.75rem;font-size:0.9rem}.btn + .btn{margin-top:1rem;margin-left:0}}.page-header{color:#fff;text-align:center;background-color:#159957;background-image:linear-gradient(120deg, #155799, #159957)}@media screen and (min-width: 64em){.page-header{padding:.5rem 6rem;padding-top:100px}}@media screen and (min-width: 42em) and (max-width: 64em){.page-header{padding:3rem 4rem;padding-top:100px}}@media screen and (max-width: 42em){.page-header{padding:2rem 1rem}}.project-name{margin-top:0;margin-bottom:0.1rem}@media screen and (min-width: 64em){.project-name{font-size:3.25rem}}@media screen and (min-width: 42em) and (max-width: 64em){.project-name{font-size:2.25rem}}@media screen and (max-width: 42em){.project-name{font-size:1.75rem}}.project-tagline{margin-bottom:2rem;font-weight:normal;opacity:0.7}@media screen and (min-width: 64em){.project-tagline{font-size:1.25rem}}@media screen and (min-width: 42em) and (max-width: 64em){.project-tagline{font-size:1.15rem}}@media screen and (max-width: 42em){.project-tagline{font-size:1rem}}.main-content :first-child{margin-top:0}.main-content img{max-width:100%;cursor:pointer;}.main-content h1,.main-content h2,.main-content h3,.main-content h4,.main-content h5,.main-content h6{margin-top:1rem;margin-bottom:2rem;font-weight:normal;color:#159957}.main-content p{margin-bottom:1em;overflow-wrap:break-word}.main-content code{padding:2px 4px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:0.9rem;color:#383e41;background-color:#f3f6fa;border-radius:0.3rem}.main-content pre{padding:0.8rem;margin-top:0;margin-bottom:1rem;font:1rem Consolas, "Liberation Mono", Menlo, Courier, monospace;color:#567482;word-wrap:normal;background-color:#1a1b1a;border:solid 1px #dce6f0;border-radius:0.3rem}.main-content pre > code{padding:0;margin:0;font-size:0.9rem;color:#00aeff;word-break:normal;white-space:pre;background:transparent;border:0}.main-content .highlight{margin-bottom:1rem}.main-content .highlight pre{margin-bottom:0;word-break:normal}.main-content .highlight pre,.main-content pre{padding:0.8rem;overflow:auto;font-size:0.9rem;line-height:1.45;border-radius:0.3rem}.main-content pre code,.main-content pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.main-content pre code:before,.main-content pre code:after,.main-content pre tt:before,.main-content pre tt:after{content:normal}.main-content ul,.main-content ol{margin-top:0}.main-content blockquote{padding:0 1rem;margin-left:0;color:#272727;border-left:0.3rem solid #dce6f0}.main-content blockquote > :first-child{margin-top:0}.main-content blockquote > :last-child{margin-bottom:0}.main-content table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.main-content table th{font-weight:bold}.main-content table th,.main-content table td{padding:0.5rem 1rem;border:1px solid #e9ebec}.main-content dl{padding:0}.main-content dl dt{padding:0;margin-top:1rem;font-size:1rem;font-weight:bold}.main-content dl dd{padding:0;margin-bottom:1rem}.main-content hr{height:2px;padding:0;margin:1rem 0;background-color:#9a9a9a;border:0}@media screen and (min-width: 74em){.main-content{max-width:74rem;padding:2rem 6rem;margin:0 auto;font-size:1.1rem}}@media screen and (min-width: 42em) and (max-width: 64em){.main-content{padding:2rem 4rem;font-size:1.1rem}}@media screen and (max-width: 42em){.main-content{padding:2rem 1rem;font-size:1rem}}.site-footer{padding-top:2rem;margin-top:2rem;border-top:solid 1px #eff0f1}.site-footer-owner{display:block;font-weight:bold}.site-footer-credits{color:#819198}@media screen and (min-width: 64em){.site-footer{font-size:1rem}}@media screen and (min-width: 42em) and (max-width: 64em){.site-footer{font-size:1rem}}@media screen and (max-width: 42em){.site-footer{font-size:0.9rem}} 2 | a img { 3 | vertical-align: baseline; 4 | } 5 | nav#mySidenav::-webkit-scrollbar 6 | { 7 | display:none; 8 | } 9 | nav#mySidenav:hover::-webkit-scrollbar { 10 | display:block; 11 | } 12 | .featherlight .featherlight-image { 13 | margin-bottom:0!important; 14 | } 15 | .main-content li img { 16 | cursor: pointer; 17 | width:46.6%; 18 | max-width:46.6%; 19 | } 20 | .copied-msg{ 21 | color:#ff0000; 22 | font-size: 10px; 23 | font-style: oblique; 24 | display: inline; 25 | font-weight: 600; 26 | } 27 | pre button.w3-btn { 28 | background: #fff; 29 | color: #000; 30 | display:block; 31 | transition: 1s ease-in-out .5s; 32 | } 33 | pre button.w3-btn:hover { 34 | background: #0000ff; 35 | color: #00ff00; 36 | } 37 | ::-webkit-scrollbar-track 38 | { 39 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.8); 40 | background-color: #656565; 41 | } 42 | 43 | ::-webkit-scrollbar 44 | { 45 | width: 10px; 46 | background-color: #0a0a0a; 47 | } 48 | ::-webkit-scrollbar-thumb 49 | { 50 | 51 | background-color: #000000; 52 | border: 2px solid rgba(0, 58, 191, 0.75); 53 | } 54 | .main-content li pre{ 55 | overflow:visible; 56 | } -------------------------------------------------------------------------------- /Speedometer_readme.md: -------------------------------------------------------------------------------- 1 | ### FAQ 2 | - A touch on the MZD clock toggles the small statusbar speedo on and off. 3 | It appears automatically after a MZD restart or if you open the speedo app. 4 | - The analog tachometer on the left side displays the untouched vehicle speed. The value in OEM tachometer and HUD are artificially manipulated. 5 | - Top and average speed will be calculated with vehicle speed, not with gps speed. 6 | - GPS and vehicle speed shows normally the same, because the sensor for vehicle speed is very correct. Sometimes it has a difference by 1 kph. 7 | - Fuel consumption in brackets is calculated over the total distance of odometer and will never be reset. 8 | Second fuel consumption value is only for the current trip. 9 | - Idle time runs as soon as no vehicle speed is detected, no matter if istop is active. 10 | Engine idle time runs if engine is running but car has no speed (opposite to iStop time) 11 | - The small speedometer has no influence on performance anymore, because it uses no extra javascript like in older versions. 12 | - If you have used All-In-One tool for installation and the compass points to the opposite direction, there was something wrong at the installation process (e.g. the NAV SD was ejected). 13 | In this case you can toggle manually the user config variable "var noNavSD" or make a second installation with AIO again and inserted NAV SD. 14 | - Pointer of Engine Speed goes until 8000 r/min, even if the scale ends at 7000. 15 | The pointer for max engine speed will stay at the correct value (also above 7000 r/min) and should be understandable without digit. 16 | 17 | ### Important for MZD firmware version 56.00.511/512/513 18 | If you have one of the above version and an optional OEM SD card navigation the GPS values can't correctly be retrieved from car. 19 | This causes lagging or no refreshes of altitude, latitude, longitude and speed in status bar. 20 | One confirmed workaround is to eject and shortly reinsert the SD card while driving. 21 | Not confirmed: Have navigation as last opened app before switching off ignition. Next time you start the car the speedo shows correct GPS values. 22 | 23 | 24 | ### Bug reporting 25 | Any bug report should contain the following information: 26 | - used installer (single installer by diginix or All-In-One tool from Siutsch) 27 | - speedometer version 28 | - MZD firmware version 29 | - Mazda model (M3,M6,CX-5,MX-5) 30 | - what other (app menu) tweaks are installed 31 | 32 | 33 | ### User config 34 | all customization can be done in this file 35 | jci/opera/opera_dir/userjs/speedometer-startup.js 36 | 37 | ``` 38 | ######################################################################################################## 39 | # // set it false if you don't want the small speedometer in statusbar # 40 | # // (could be helpful if you have performance problems) # 41 | # var enableSmallSbSpeedo = true; # 42 | # # 43 | # // isMPH is used for metric/US english conversion flag (C/F, KPH/MPH, Meter/Feet, L per 100km/MPG) # 44 | # // Set isMPH = true for MPH, Feet, MPG # 45 | # // Set isMPH = false for KMH, Meter, km/L # 46 | # var isMPH = false; # 47 | # # 48 | # // set the language for the speedometer # 49 | # // if DE fuel consumption is L/100km # 50 | # // available EN, ES, DE, PL, SK, FR # 51 | # var language = "DE"; # 52 | # # 53 | # // set unit for fuel efficiency to km/L instead of L/100km # 54 | # var fuelEffunit_kml = false; # 55 | # # 56 | # // set true if you have no Mazda navigation SD card (important for the compass) # 57 | # var noNavSD = false; # 58 | # # 59 | # // set the opacity of black background color for speedometer, # 60 | # // to reduce the visibility of custom MZD background images # 61 | # // possible values 0.0 (full transparent) until 1.0 (complete black background) # 62 | # var black_background_opacity = 0.0; # 63 | # # 64 | # // set true if you want the original speedometer background image as in version 4.2 or below # 65 | # // if "true" the opacity above will be ignored # 66 | # var original_background_image = false; # 67 | # # 68 | ######################################################################################################## 69 | ``` -------------------------------------------------------------------------------- /js/w3data.js: -------------------------------------------------------------------------------- 1 | /* W3Data ver 1.31 by W3Schools.com */ 2 | var w3DataObject = {}; 3 | function w3DisplayData(id, data) { 4 | var htmlObj, htmlTemplate, html, arr = [], a, l, rowClone, x, j, i, ii, cc, repeat, repeatObj, repeatX = ""; 5 | htmlObj = document.getElementById(id); 6 | htmlTemplate = w3InitTemplate(id, htmlObj); 7 | html = htmlTemplate.cloneNode(true); 8 | arr = w3GetElementsByAttribute(html, "w3-repeat"); 9 | l = arr.length; 10 | for (j = (l - 1); j >= 0; j -= 1) { 11 | cc = arr[j].getAttribute("w3-repeat").split(" "); 12 | if (cc.length == 1) { 13 | repeat = cc[0]; 14 | } else { 15 | repeatX = cc[0]; 16 | repeat = cc[2]; 17 | } 18 | arr[j].removeAttribute("w3-repeat"); 19 | repeatObj = data[repeat]; 20 | if (repeatObj && typeof repeatObj == "object" && repeatObj.length != "undefined") { 21 | i = 0; 22 | for (x in repeatObj) { 23 | i += 1; 24 | rowClone = arr[j]; 25 | rowClone = w3NeedleInHaystack(rowClone, "element", repeatX, repeatObj[x]); 26 | a = rowClone.attributes; 27 | for (ii = 0; ii < a.length; ii += 1) { 28 | a[ii].value = w3NeedleInHaystack(a[ii], "attribute", repeatX, repeatObj[x]).value; 29 | } 30 | (i === repeatObj.length) ? arr[j].parentNode.replaceChild(rowClone, arr[j]) : arr[j].parentNode.insertBefore(rowClone, arr[j]); 31 | } 32 | } else { 33 | console.log("w3-repeat must be an array. " + repeat + " is not an array."); 34 | continue; 35 | } 36 | } 37 | html = w3NeedleInHaystack(html, "element"); 38 | htmlObj.parentNode.replaceChild(html, htmlObj); 39 | function w3InitTemplate(id, obj) { 40 | var template; 41 | template = obj.cloneNode(true); 42 | if (w3DataObject.hasOwnProperty(id)) {return w3DataObject[id];} 43 | w3DataObject[id] = template; 44 | return template; 45 | } 46 | function w3GetElementsByAttribute(x, att) { 47 | var arr = [], arrCount = -1, i, l, y = x.getElementsByTagName("*"), z = att.toUpperCase(); 48 | l = y.length; 49 | for (i = -1; i < l; i += 1) { 50 | if (i == -1) {y[i] = x;} 51 | if (y[i].getAttribute(z) !== null) {arrCount += 1; arr[arrCount] = y[i];} 52 | } 53 | return arr; 54 | } 55 | function w3NeedleInHaystack(elmnt, typ, repeatX, x) { 56 | var value, rowClone, pos1, haystack, pos2, needle = [], needleToReplace, i, cc, r; 57 | rowClone = elmnt.cloneNode(true); 58 | pos1 = 0; 59 | while (pos1 > -1) { 60 | haystack = (typ == "attribute") ? rowClone.value : rowClone.innerHTML; 61 | pos1 = haystack.indexOf("{{", pos1); 62 | if (pos1 === -1) {break;} 63 | pos2 = haystack.indexOf("}}", pos1 + 1); 64 | needleToReplace = haystack.substring(pos1 + 2, pos2); 65 | needle = needleToReplace.split("||"); 66 | value = undefined; 67 | for (i = 0; i < needle.length; i += 1) { 68 | needle[i] = needle[i].replace(/^\s+|\s+$/gm, ''); //trim 69 | //value = ((x && x[needle[i]]) || (data && data[needle[i]])); 70 | if (x) {value = x[needle[i]];} 71 | if (value == undefined && data) {value = data[needle[i]];} 72 | if (value == undefined) { 73 | cc = needle[i].split("."); 74 | if (cc[0] == repeatX) {value = x[cc[1]]; } 75 | } 76 | if (value == undefined) { 77 | if (needle[i] == repeatX) {value = x;} 78 | } 79 | if (value == undefined) { 80 | if (needle[i].substr(0, 1) == '"') { 81 | value = needle[i].replace(/"/g, ""); 82 | } else if (needle[i].substr(0,1) == "'") { 83 | value = needle[i].replace(/'/g, ""); 84 | } 85 | } 86 | if (value != undefined) {break;} 87 | } 88 | if (value != undefined) { 89 | r = "{{" + needleToReplace + "}}"; 90 | if (typ == "attribute") { 91 | rowClone.value = rowClone.value.replace(r, value); 92 | } else { 93 | w3ReplaceHTML(rowClone, r, value); 94 | } 95 | } 96 | pos1 = pos1 + 1; 97 | } 98 | return rowClone; 99 | } 100 | function w3ReplaceHTML(a, r, result) { 101 | var b, l, i, a, x, j; 102 | if (a.hasAttributes()) { 103 | b = a.attributes; 104 | l = b.length; 105 | for (i = 0; i < l; i += 1) { 106 | if (b[i].value.indexOf(r) > -1) {b[i].value = b[i].value.replace(r, result);} 107 | } 108 | } 109 | x = a.getElementsByTagName("*"); 110 | l = x.length; 111 | a.innerHTML = a.innerHTML.replace(r, result); 112 | } 113 | } 114 | function w3IncludeHTML(cb) { 115 | var z, i, elmnt, file, xhttp; 116 | z = document.getElementsByTagName("*"); 117 | for (i = 0; i < z.length; i++) { 118 | elmnt = z[i]; 119 | file = elmnt.getAttribute("w3-include-html"); 120 | if (file) { 121 | xhttp = new XMLHttpRequest(); 122 | xhttp.onreadystatechange = function() { 123 | if (this.readyState == 4 && this.status == 200) { 124 | elmnt.innerHTML = this.responseText; 125 | elmnt.removeAttribute("w3-include-html"); 126 | w3IncludeHTML(cb); 127 | } 128 | } 129 | xhttp.open("GET", file, true); 130 | xhttp.send(); 131 | return; 132 | } 133 | } 134 | if (cb) cb(); 135 | } 136 | function w3Http(target, readyfunc, xml, method) { 137 | var httpObj; 138 | if (!method) {method = "GET"; } 139 | if (window.XMLHttpRequest) { 140 | httpObj = new XMLHttpRequest(); 141 | } else if (window.ActiveXObject) { 142 | httpObj = new ActiveXObject("Microsoft.XMLHTTP"); 143 | } 144 | if (httpObj) { 145 | if (readyfunc) {httpObj.onreadystatechange = readyfunc;} 146 | httpObj.open(method, target, true); 147 | httpObj.send(xml); 148 | } 149 | } -------------------------------------------------------------------------------- /js/featherlight.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Featherlight - ultra slim jQuery lightbox 3 | * Version 1.7.1 - http://noelboss.github.io/featherlight/ 4 | * 5 | * Copyright 2017, Noël Raoul Bossart (http://www.noelboss.com) 6 | * MIT Licensed. 7 | **/ 8 | !function(a){"use strict";function b(a,c){if(!(this instanceof b)){var d=new b(a,c);return d.open(),d}this.id=b.id++,this.setup(a,c),this.chainCallbacks(b._callbackChain)}function c(a,b){var c={};for(var d in a)d in b&&(c[d]=a[d],delete a[d]);return c}function d(a,b){var c={},d=new RegExp("^"+b+"([A-Z])(.*)");for(var e in a){var f=e.match(d);if(f){var g=(f[1]+f[2].replace(/([A-Z])/g,"-$1")).toLowerCase();c[g]=a[e]}}return c}if("undefined"==typeof a)return void("console"in window&&window.console.info("Too much lightness, Featherlight needs jQuery."));var e=[],f=function(b){return e=a.grep(e,function(a){return a!==b&&a.$instance.closest("body").length>0})},g={allowfullscreen:1,frameborder:1,height:1,longdesc:1,marginheight:1,marginwidth:1,name:1,referrerpolicy:1,scrolling:1,sandbox:1,src:1,srcdoc:1,width:1},h={keyup:"onKeyUp",resize:"onResize"},i=function(c){a.each(b.opened().reverse(),function(){return c.isDefaultPrevented()||!1!==this[h[c.type]](c)?void 0:(c.preventDefault(),c.stopPropagation(),!1)})},j=function(c){if(c!==b._globalHandlerInstalled){b._globalHandlerInstalled=c;var d=a.map(h,function(a,c){return c+"."+b.prototype.namespace}).join(" ");a(window)[c?"on":"off"](d,i)}};b.prototype={constructor:b,namespace:"featherlight",targetAttr:"data-featherlight",variant:null,resetCss:!1,background:null,openTrigger:"click",closeTrigger:"click",filter:null,root:"body",openSpeed:250,closeSpeed:250,closeOnClick:"background",closeOnEsc:!0,closeIcon:"✕",loading:"",persist:!1,otherClose:null,beforeOpen:a.noop,beforeContent:a.noop,beforeClose:a.noop,afterOpen:a.noop,afterContent:a.noop,afterClose:a.noop,onKeyUp:a.noop,onResize:a.noop,type:null,contentFilters:["jquery","image","html","ajax","iframe","text"],setup:function(b,c){"object"!=typeof b||b instanceof a!=!1||c||(c=b,b=void 0);var d=a.extend(this,c,{target:b}),e=d.resetCss?d.namespace+"-reset":d.namespace,f=a(d.background||['
    ','
    ','",'
    '+d.loading+"
    ","
    ","
    "].join("")),g="."+d.namespace+"-close"+(d.otherClose?","+d.otherClose:"");return d.$instance=f.clone().addClass(d.variant),d.$instance.on(d.closeTrigger+"."+d.namespace,function(b){var c=a(b.target);("background"===d.closeOnClick&&c.is("."+d.namespace)||"anywhere"===d.closeOnClick||c.closest(g).length)&&(d.close(b),b.preventDefault())}),this},getContent:function(){if(this.persist!==!1&&this.$content)return this.$content;var b=this,c=this.constructor.contentFilters,d=function(a){return b.$currentTarget&&b.$currentTarget.attr(a)},e=d(b.targetAttr),f=b.target||e||"",g=c[b.type];if(!g&&f in c&&(g=c[f],f=b.target&&e),f=f||d("href")||"",!g)for(var h in c)b[h]&&(g=c[h],f=b[h]);if(!g){var i=f;if(f=null,a.each(b.contentFilters,function(){return g=c[this],g.test&&(f=g.test(i)),!f&&g.regex&&i.match&&i.match(g.regex)&&(f=i),!f}),!f)return"console"in window&&window.console.error("Featherlight: no content filter found "+(i?' for "'+i+'"':" (no target specified)")),!1}return g.process.call(b,f)},setContent:function(b){var c=this;return b.is("iframe")&&c.$instance.addClass(c.namespace+"-iframe"),c.$instance.removeClass(c.namespace+"-loading"),c.$instance.find("."+c.namespace+"-inner").not(b).slice(1).remove().end().replaceWith(a.contains(c.$instance[0],b[0])?"":b),c.$content=b.addClass(c.namespace+"-inner"),c},open:function(b){var c=this;if(c.$instance.hide().appendTo(c.root),!(b&&b.isDefaultPrevented()||c.beforeOpen(b)===!1)){b&&b.preventDefault();var d=c.getContent();if(d)return e.push(c),j(!0),c.$instance.fadeIn(c.openSpeed),c.beforeContent(b),a.when(d).always(function(a){c.setContent(a),c.afterContent(b)}).then(c.$instance.promise()).done(function(){c.afterOpen(b)})}return c.$instance.detach(),a.Deferred().reject().promise()},close:function(b){var c=this,d=a.Deferred();return c.beforeClose(b)===!1?d.reject():(0===f(c).length&&j(!1),c.$instance.fadeOut(c.closeSpeed,function(){c.$instance.detach(),c.afterClose(b),d.resolve()})),d.promise()},resize:function(a,b){if(a&&b){this.$content.css("width","").css("height","");var c=Math.max(a/(parseInt(this.$content.parent().css("width"),10)-1),b/(parseInt(this.$content.parent().css("height"),10)-1));c>1&&(c=b/Math.floor(b/c),this.$content.css("width",""+a/c+"px").css("height",""+b/c+"px"))}},chainCallbacks:function(b){for(var c in b)this[c]=a.proxy(b[c],this,a.proxy(this[c],this))}},a.extend(b,{id:0,autoBind:"[data-featherlight]",defaults:b.prototype,contentFilters:{jquery:{regex:/^[#.]\w/,test:function(b){return b instanceof a&&b},process:function(b){return this.persist!==!1?a(b):a(b).clone(!0)}},image:{regex:/\.(png|jpg|jpeg|gif|tiff|bmp|svg)(\?\S*)?$/i,process:function(b){var c=this,d=a.Deferred(),e=new Image,f=a('');return e.onload=function(){f.naturalWidth=e.width,f.naturalHeight=e.height,d.resolve(f)},e.onerror=function(){d.reject(f)},e.src=b,d.promise()}},html:{regex:/^\s*<[\w!][^<]*>/,process:function(b){return a(b)}},ajax:{regex:/./,process:function(b){var c=a.Deferred(),d=a("
    ").load(b,function(a,b){"error"!==b&&c.resolve(d.contents()),c.fail()});return c.promise()}},iframe:{process:function(b){var e=new a.Deferred,f=a(" 50 | 51 | #### [Another Great Video](https://youtu.be/DhbI25T3w3Q): 52 | 53 | 54 | 55 | 1. Open glove box 56 | 2. Pull the trim. You will need to use more force than you expect. The front fan area is attached to the trim and will come off as well. 57 | 3. Disconnect the hazard light connector cable 58 | 4. Use the 10mm socket wrench to remove the bolt 59 | - ![The Bolt](/images/thebolt.jpg) 60 | 5. The headunit will slide out towards you 61 | 62 | ### Wiring the CMU: 63 | 64 | **Do not modify any of the below commands** If the commands do not work, then you have done something wrong (i.e. you're not logged in, or RX/TX wires are not properly wired) 65 | 66 | 1. You will need to have 3 wires connected to the CMU: Transmit (TX), Receive (RX), and Ground (GND) 67 | 2. Here is a picture of the back of the CMU. We are going to be adding our cables to the ‘power&more’ connector. Here is a more detailed picture of where the RX and TX cables go. Note: The smaller 2x4logic.com diagram looks like it's the opposite of the other picture but that's because the CMU is using 2S to transmit (so the serial adapter will be receiving). For the sake of simplicity, connect the RX port of your Serial Adapter to 2S (top) and TX port to 2T (bottom). 68 | - ![Back of the CMU](/images/cmu-back.jpg) ![Back of the CMU](/images/cmu-rx-tx.jpg) 69 | 3. Be sure that the cable is going into the port. It must go in about an inch. The GND cable can go anywhere so long as it is touching the CMU. I recommend slightly unscrewing one of the Philips head screws and wedging the cable in there. 70 | 4. Connect the other end of the wires to the CP2102 module in its corresponding port. 71 | 72 | ### Serial Console App: 73 | 74 | - Make sure you know what the paste command is for your Serial Console application. In Putty, you right click inside the terminal window and it will paste whatever command you had copied. For SecureCRT, you push Ctrl+Shift+V to paste. Remember that these shortcuts will only paste, you will have to push enter after to actually send the command. 75 | 76 | 1. Windows will auto-assign a COM Port to the CP2102 module once its plugged in. Go to Device Manager > Ports (COM & LPT) to see what the COM Port # is 77 | - For SecureCRT, under Options > Connection > Serial, set Port = COM#, Baud = 115200, Data Bits = 8, Parity = None, Stop Bits = 1 78 | - For Putty, you just need to select ‘Serial’ and then enter the COM Port # and set Baud to 115200 79 | 2. You should start see text scroll by even if the car is off 80 | 3. Plug in flash drive 81 | 4. Turn the car to ACC mode by just pressing the On button without putting your foot on brake to fully turn car on 82 | 5. Now you are really going to be seeing text fly by, **remember that the commands are working even though you cannot see what you are typing because of the text flying by.** 83 | 6. Press Enter in terminal and CMU will respond with ‘login’. For the next several steps make sure you do not make any spelling mistakes. It is probably **best to copy and paste the commands** (to paste you just need to right click in the terminal window). 84 | - **If text is flying by so fast it seems like you can't type you are doing everything correctly, copy and paste each command and press enter! It will seem like your commands are not being sent to the Mazda but don’t worry they are** (_provided your wiring is right. If you got a module with LEDs you can check **TX is Transmit/RX is Receive**_) 85 | 7. Reboot Mazda CMU by holding the Nav + Mute button for 10+ seconds. 86 | 8. Input and push Enter Copy 87 | 9. Input and push Enter Copy 88 | > *NOTE:* After installing the autorun scripts you will be able to login as the root user with username: **cmu** pass: **jci** 89 | 90 | 10. Run 91 | -
    
     92 |       
    93 | 11. (Optional) To test if the files have been moved to the folder, run 94 | -
       
    95 | - The files/folders should be colored in green/blue since they are folders/executable. You may have to run this a few times to see the Serial Console output. 96 | - ![Output](/images/ls-l_output.png "This is what the output should look like") 97 | 98 | 12. Remove flash drive, turn off car, insert flash drive that has AIO tweaks installed, turn car on back in ACC mode 99 | 13. After a few minutes, you should see a message that indicates the mods are being installed. This process may take approximately 2 - 20 minutes. 100 | 101 | ### Finishing Up 102 | 103 | 1. Now that everything is installed you can put everything back together 104 | 2. Remove the TX, RX, GND wires 105 | 3. Slide CMU back in 106 | 4. Attach bolt using 10mm socket wrench 107 | 5. Connect hazard light connector cable to trim 108 | 6. Push trim back in 109 | 7. From here on out, you can just use a flashdrive to install tweaks 110 | 111 | ## You're Done! 112 | 113 | ##### If you have questions or need help visit [this thread](http://mazda3revolution.com/forums/2014-2017-mazda-3-skyactiv-audio-electronics/200450-aio-tweaks-firmware-ver-502-read.html) for more information. 114 | 115 | If you love us so much you need to donate you can [Buy Albuyeh a Hot Chocolate](https://www.paypal.me/Albuyeh) and/or you can [Buy Trez Some Weed :D](https://www.paypal.me/Trevelopment). Good Luck! 116 | -------------------------------------------------------------------------------- /Speedometer_readme.html: -------------------------------------------------------------------------------- 1 |

    To customize the Bar Speedometer edit the file (from USB Drive or _copy_to_usb folder): 'config/speedometer/speedometer-config.js'

    2 | 3 |
    /** speedometer-config.js ************************************************************** *\
      4 | |* =========================
      5 | |* Speedometer Configuration - Used to configure position of Speedometer values.
      6 | |* =========================
      7 | |* Main Speedometer Value: [0, 0, 0] - Large, Front, & Center.
      8 | |* Other Values: [ 0/1:(0 For Main Column OR 1 For Bottom Rows), Row Number, Position ]
      9 | |* Main Column Positions: 4 Values (1-4 From Top to Bottom)
     10 | |* Bottom Rows Positions: 5 Values Per Row (1-5 From Left to Right)
     11 | |* Examples:
     12 | |* [0, 1, 4] = [Main, Column, 4th position (Bottom of the Column)]
     13 | |* [1, 3, 1] = [Bottom, 3rd Row, First Position (Left Side)]
     14 | |* [1, 1, 5] = [Bottom, 1st Row, Last Position (Right Side)]
     15 | |* To Hide a Value = [1, 1, 0] (Any bottom row position 0 will hide the value)
     16 | |* To Change Bottom Row Push Command Knob ("Select")
     17 | |* Note: Only numbers inside [] brackets determine position, order in this list DOES NOT
     18 | \* ************************************************************************************* */
     19 | var spdBottomRows = 3;   //Number of Bottom Rows
     20 | var spdTbl = { // Example Layout:
     21 |   vehSpeed:   [0, 0, 0], //Vehicle Speed
     22 |   topSpeed:   [0, 1, 1], //Top Speed
     23 |   avgSpeed:   [0, 1, 2], //Average Speed
     24 |   gpsSpeed:   [0, 1, 3], //GPS Speed
     25 |   engSpeed:   [0, 1, 4], //Engine Speed
     26 |   trpTime:    [1, 1, 1], //Trip Time
     27 |   trpDist:    [1, 1, 2], //Trip Distance
     28 |   outTemp:    [1, 1, 3], //Outside Temperature
     29 |   inTemp:     [1, 1, 4], //Intake Temperature
     30 |   coolTemp:   [1, 1, 5], //Coolant Temperature
     31 |   gearPos:    [1, 2, 1], //Gear Position
     32 |   gearLvr:    [1, 1, 0], //Transmission Lever Position
     33 |   fuelLvl:    [1, 2, 2], //Fuel Gauge Level
     34 |   trpFuel:    [1, 2, 3], //Trip Fuel Economy
     35 |   totFuel:    [1, 2, 4], //Total Fuel Economy
     36 |   avgFuel:    [1, 2, 5], //Average Fuel Economy
     37 |   gpsAlt:     [1, 3, 2], //Altitude
     38 |   gpsAltMM:   [1, 3, 3], //Altitude Min/Max
     39 |   gpsHead:    [1, 3, 1], //GPS Heading
     40 |   gpsLat:     [1, 3, 4], //GPS Latitude
     41 |   gpsLon:     [1, 3, 5], //GPS Longitude
     42 |   trpIdle:    [1, 1, 0], //Idle Time
     43 |   trpEngIdle: [1, 1, 0], //Engine Idle Time
     44 |   engTop:     [1, 1, 0], //Engine Top Speed
     45 |   engLoad:    [1, 1, 0], //Engine Load
     46 |   batSOC:     [1, 1, 0], //Battery Charge State (i-stop)
     47 | };
     48 | 
    49 |
    
     50 | // OverRide Values
     51 | /* ************************************************** */
     52 | /* Set overRideSpeed to true to use your values below */
     53 | /* If this is false the following values are not used */
     54 | var overRideSpeed=false;
     55 | /* ************************************************** */
     56 | /* * Start OverRide Variables *********************** */
     57 | var SORV = {
     58 |   // Set the language for the speedometer
     59 |   // Available EN, ES, DE, PL, SK, TR, FR, IT
     60 |   language: "EN",
     61 | 
     62 |   // Used for metric/US english conversion flag (C/F, KPH/MPH, Meter/Feet, L per 100km/MPG)
     63 |   // Set isMPH: true for MPH, Feet, MPG
     64 |   // Set isMPH: false for KPH, Meter
     65 |   isMPH: false,
     66 | 
     67 |   // Set This to true to start with the Bar Speedometer Mod
     68 |   // False to use the analog speedometer
     69 |   barSpeedometerMod: true,
     70 | 
     71 |   // Set true to enable multicontroller and other mod features in classic mode
     72 |   // If false then use classic speedometer without Mods
     73 |   speedMod: true,
     74 | 
     75 |   // Set to true to start the classic speedometer in analog mode
     76 |   // False to start in digital mode
     77 |   startAnalog: true,
     78 | 
     79 |   // Set it true for the StatusBar Speedometer
     80 |   // False if you don't want the small speedometer in statusbar
     81 |   StatusBarSpeedometer: true,
     82 | 
     83 |   // Set to true for Outside Temperature & Fuel Efficiency in the statusbar
     84 |   // False for Compass & Altitude
     85 |   sbTemp: false,
     86 | 
     87 |   // Set true if you want the original speedometer background image as in version 4.2 or below
     88 |   // False for no background
     89 |   // If "true" the opacity above will be ignored
     90 |   original_background_image: false,
     91 | 
     92 |   // Set the opacity of black background color for speedometer, to reduce the visibility of custom MZD background images
     93 |   // Possible values 0.0 (full transparent) until 1.0 (complete black background)
     94 |   black_background_opacity: 0.0,
     95 | 
     96 |   // Set unit for fuel efficiency to km/L
     97 |   // False for L/100km
     98 |   fuelEffunit_kml: false,
     99 | 
    100 |   // Set this to true for Fahrenheit
    101 |   // False for Celsius
    102 |   tempIsF: false,
    103 | 
    104 |   // For the Speed Bar false for Current Vehicle Speed
    105 |   // Set This to true if you want the Colored Bar to measure engine speed
    106 |   engineSpeedBar: false,
    107 | 
    108 |   // Set This to true to hide the Speed Bar
    109 |   // False shows he bar
    110 |   hideSpeedBar: false,
    111 | 
    112 |   // Set this to true to enable counter animation on the speed number
    113 |   // False to disable speed counter animation
    114 |   // The animation causes the digital number to lag by 1 second
    115 |   speedAnimation: false,
    116 | };
    117 | 
    118 | 119 |

    To customize the Speedometer Multicontroller functions edit the file (from USB Drive or _copy_to_usb folder): 'config/speedometer/speedometer-controls.js'

    120 |
    /** speedometer-controls.js ************************************************************** *\
    121 | |* =========================
    122 | |* Speedometer Controls - Used to map multicontroller "clicks" to toggle actions/events
    123 | |* =========================
    124 | |* Numbers may be used multiple times.  Ex: set all directions under bar to 4
    125 | |* and all multicontroller directions will toggle the background
    126 | |* KEY:
    127 | |* Both Speedometers: (Same by default but can be set independently)
    128 | |* 1: (Default: up) - Toggle Speed Unit (mph-km/h)
    129 | |* 3: (Default: right) - Toggle Temp C-F (mph mode) Fuel Eff L/km-km/100L (km/h mode)
    130 | |* 4: (Default: left) - Toggle Background
    131 | |* 8: (Default: hold.right) - Reset Trip Time, Distance, Top/Ave Speed
    132 | |* 9: (Default: hold.left) - Change Color Theme
    133 | |* Bar (Colored Speed Bar w/ Bottom Rows):
    134 | |* 0: (Default: select) - Show Next Bottom Row
    135 | |* 2: (Default: down) - Toggle Speed Bar (VehSpeed-RPM)
    136 | |* 5: (Default: hold.select) - Reset Layout
    137 | |* 6: (Default: hold.up) - Switch To Classic Speedometer
    138 | |* 7: (Default: hold.down) - Hide/Show Speed Bar
    139 | |* Classic (Analog w/ Compass):
    140 | |* 0: (Default: select) - Toggle Speed (Analog-Digital)
    141 | |* 2: (Default: down) - Toggle Larger Text
    142 | |* 5: (Default: hold.select) - Toggle Alternate Values (Time-Temp)
    143 | |* 6: (Default: hold.up) - Switch To Bar Speedometer
    144 | |* 7: (Default: hold.down) - Basic Speedo - Analog & Disables Toggles Except Itself To Toggle Back
    145 | |* ************************************************************************************* *|
    146 | |* null: To Disable Multicontroller Key (do not leave any blank!!!)
    147 | \* ************************************************************************************* */
    148 | var spdBtn = {
    149 |   bar: { // Controls for the Bar Speedometer context
    150 |     select: 0,
    151 |     up: 1,
    152 |     down: 2,
    153 |     right: 3,
    154 |     left: 4,
    155 |     hold: { // Used when the click is held for 2 seconds
    156 |       select: 5,
    157 |       up: 6,
    158 |       down: 7,
    159 |       right: 8,
    160 |       left: 9,
    161 |     }
    162 |   },
    163 |   classic: { // Controls for the Classic (Analog) Speedometer context
    164 |     select: 0,
    165 |     up: 1,
    166 |     down: 2,
    167 |     right: 3,
    168 |     left: 4,
    169 |     hold: { // Used when the click is held for 2 seconds
    170 |       select: 5,
    171 |       up: 6,
    172 |       down: 7,
    173 |       right: 8,
    174 |       left: 9,
    175 |     }
    176 |   }
    177 | };
    178 | 
    179 | 180 |

    To customize the Bar Speedometer color themes edit the file (from USB Drive or _copy_to_usb folder): 'config/speedometer/barThemes.css'

    181 |
    /* barThemes.css - Customize Bar Speedometer Color Themes
    182 | * Any Valid CSS Colors Can Be Used Examples:
    183 | * Names -    Ex: blue;
    184 | * Hex -      Ex: #00ff66;
    185 | * RGB -      Ex: rgb(100, 255, 0);
    186 | * HSL -      Ex: hsl(248, 53%, 58%);
    187 | * For More Info On CSS Colors Visit https://www.w3schools.com/colors/colors_names.asp
    188 | * Each Theme Has 3 Colors In This Order:
    189 | * Primary - Color of Values
    190 | * Secondary - Color of Labels/Units
    191 | * Border-Color - Color of the Box Borders
    192 | * If you know CSS then have fun with it
    193 | * CSS is a very forgiving language any errors in this file will be ignored
    194 | */
    195 | 
    196 | /* Theme #1 */
    197 | 
    198 | #speedBarContainer.theme1 #vehdataMainDiv fieldset div, #speedBarContainer.theme1 #vehdataMainDiv [class*="vehDataMain"].pos0 div {
    199 |   /* Primary */
    200 |   color: aquamarine;
    201 | }
    202 | 
    203 | #speedBarContainer.theme1 #vehdataMainDiv [class*="vehDataMain"].pos0 legend .spunit span, #speedBarContainer.theme1 #vehdataMainDiv fieldset {
    204 |   /* Secondary */
    205 |   color: #64bfff;
    206 |   /* Border-Color */
    207 |   border-color: blue;
    208 | }
    209 | 
    210 | /* Theme #2 */
    211 | 
    212 | #speedBarContainer.theme2 #vehdataMainDiv fieldset div, #speedBarContainer.theme2 #vehdataMainDiv [class*="vehDataMain"].pos0 div {
    213 |   color: #3fff17;
    214 | }
    215 | 
    216 | #speedBarContainer.theme2 #vehdataMainDiv [class*="vehDataMain"].pos0 legend .spunit span, #speedBarContainer.theme2 #vehdataMainDiv fieldset {
    217 |   color: hsl(248, 53%, 58%);
    218 |   border-color: rgb(100, 0, 12);
    219 | }
    220 | 
    221 | /* Theme #3 */
    222 | ...
    223 | ...
    224 | ...
    225 | 
    226 | 227 | -------------------------------------------------------------------------------- /css/ideal-image-slider.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Ideal Image Slider v1.5.1 3 | * 4 | * By Gilbert Pellegrom 5 | * http://gilbert.pellegrom.me 6 | * 7 | * Copyright (C) 2014 Dev7studios 8 | * //raw.githubusercontent.com/gilbitron/Ideal-Image-Slider/master/LICENSE 9 | */ 10 | 11 | .ideal-image-slider { 12 | position: relative; 13 | overflow: hidden; 14 | } 15 | .iis-slide { 16 | display: block; 17 | bottom: 0; 18 | text-decoration: none; 19 | position: absolute; 20 | top: 0; 21 | left: 0; 22 | width: 100%; 23 | height: 100%; 24 | background-repeat: no-repeat; 25 | background-position: 50% 50%; 26 | background-size: cover; 27 | text-indent: -9999px; 28 | } 29 | 30 | /* Slide effect */ 31 | .iis-effect-slide .iis-slide { 32 | opacity: 0; 33 | -webkit-transition-property: -webkit-transform; 34 | -moz-transition-property: -moz-transform; 35 | -o-transition-property: -o-transform; 36 | transition-property: transform; 37 | -webkit-transition-timing-function: ease-out; 38 | -moz-transition-timing-function: ease-out; 39 | -o-transition-timing-function: ease-out; 40 | transition-timing-function: ease-out; 41 | -webkit-transform: translateX(0%); 42 | -ms-transform: translateX(0%); 43 | transform: translateX(0%); 44 | } 45 | .iis-effect-slide .iis-current-slide { 46 | opacity: 1; 47 | z-index: 1; 48 | } 49 | .iis-effect-slide .iis-previous-slide { 50 | -webkit-transform: translateX(-100%); 51 | -ms-transform: translateX(-100%); 52 | transform: translateX(-100%); 53 | } 54 | .iis-effect-slide .iis-next-slide { 55 | -webkit-transform: translateX(100%); 56 | -ms-transform: translateX(100%); 57 | transform: translateX(100%); 58 | } 59 | .iis-effect-slide.iis-direction-next .iis-previous-slide, 60 | .iis-effect-slide.iis-direction-previous .iis-next-slide { opacity: 1; } 61 | 62 | /* Touch styles */ 63 | .iis-touch-enabled .iis-slide { z-index: 1; } 64 | .iis-touch-enabled .iis-current-slide { z-index: 2; } 65 | .iis-touch-enabled.iis-is-touching .iis-previous-slide, 66 | .iis-touch-enabled.iis-is-touching .iis-next-slide { opacity: 1; } 67 | 68 | /* Fade effect */ 69 | .iis-effect-fade .iis-slide { 70 | -webkit-transition-property: opacity; 71 | -moz-transition-property: opacity; 72 | -o-transition-property: opacity; 73 | transition-property: opacity; 74 | -webkit-transition-timing-function: ease-in; 75 | -moz-transition-timing-function: ease-in; 76 | -o-transition-timing-function: ease-in; 77 | transition-timing-function: ease-in; 78 | opacity: 0; 79 | } 80 | .iis-effect-fade .iis-current-slide { 81 | opacity: 1; 82 | z-index: 1; 83 | } 84 | /* 85 | * Ideal Image Slider Default Theme 86 | * Version: 1.2.0 87 | */ 88 | 89 | .ideal-image-slider { 90 | background-color: #fff; 91 | background-image: url("data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQACgABACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQACgACACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkEAAoAAwAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkEAAoABAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAAKAAUALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAAKAAYALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQACgAHACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAAKAAgALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAAKAAkALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQACgAKACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkEAAoACwAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA=="); 92 | background-repeat: no-repeat; 93 | background-position: 50% 50%; 94 | background-size: 32px 32px; 95 | } 96 | 97 | /* Navigation */ 98 | .iis-previous-nav, 99 | .iis-next-nav { 100 | position: absolute; 101 | top: 50%; 102 | z-index: 20; 103 | display: block; 104 | width: 60px; 105 | height: 60px; 106 | text-indent: -9999px; 107 | background-repeat: no-repeat; 108 | background-color: rgba(0,0,0,0.5); 109 | border-radius: 50px; 110 | background-size: 48px 48px; 111 | cursor: pointer; 112 | opacity: 0; 113 | -webkit-transform: translateY(-50%); 114 | -ms-transform: translateY(-50%); 115 | transform: translateY(-50%); 116 | -webkit-transition: 0.3s ease-out; 117 | -moz-transition: 0.3s ease-out; 118 | -o-transition: 0.3s ease-out; 119 | transition: 0.3s ease-out; 120 | } 121 | .iis-previous-nav { 122 | left: 5%; 123 | background-position: 35% 50%; 124 | background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPHBvbHlnb24gZmlsbD0iI2ZmZmZmZiIgaWQ9InN2Z18xIiBwb2ludHM9IjM1MiwxMTUuNCAzMzEuMyw5NiAxNjAsMjU2IDMzMS4zLDQxNiAzNTIsMzk2LjcgMjAxLjUsMjU2ICIvPgogPC9nPgo8L3N2Zz4="); 125 | } 126 | .iis-next-nav { 127 | right: 5%; 128 | background-position: 65% 50%; 129 | background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPHBvbHlnb24gZmlsbD0iI2ZmZmZmZiIgaWQ9InN2Z18xIiBwb2ludHM9IjE2MCwxMTUuNCAxODAuNyw5NiAzNTIsMjU2IDE4MC43LDQxNiAxNjAsMzk2LjcgMzEwLjUsMjU2ICIvPgogPC9nPgo8L3N2Zz4="); 130 | } 131 | .ideal-image-slider:hover .iis-previous-nav, 132 | .ideal-image-slider:hover .iis-next-nav { opacity: 0.5; } 133 | .ideal-image-slider:hover .iis-previous-nav:hover, 134 | .ideal-image-slider:hover .iis-next-nav:hover { opacity: 1.0; } 135 | 136 | /* Bullet Navigation */ 137 | .iis-bullet-nav { 138 | position: absolute; 139 | bottom: 5%; 140 | right: 5%; 141 | z-index: 15; 142 | width: 90%; 143 | text-align: right; 144 | opacity: 0.4; 145 | -webkit-transition: 0.3s ease-out; 146 | -moz-transition: 0.3s ease-out; 147 | -o-transition: 0.3s ease-out; 148 | transition: 0.3s ease-out; 149 | } 150 | .iis-has-captions .iis-bullet-nav { max-width: 42%; } 151 | .iis-bullet-nav a { 152 | font-size:0; 153 | display: inline-block; 154 | width: 10px; 155 | height: 10px; 156 | background: transparent; 157 | text-indent: 9999px; 158 | margin: 0 5px; 159 | border: 3px solid rgba(0,0,0,0.5); 160 | border-radius: 10px; 161 | cursor: pointer; 162 | -webkit-transition: 0.3s ease-out; 163 | -moz-transition: 0.3s ease-out; 164 | -o-transition: 0.3s ease-out; 165 | transition: 0.3s ease-out; 166 | } 167 | .iis-bullet-nav a.iis-bullet-active, 168 | .iis-bullet-nav a:hover { background: #fff; } 169 | .ideal-image-slider:hover .iis-bullet-nav { opacity: 0.7; } 170 | .ideal-image-slider:hover .iis-bullet-nav:hover { opacity: 1.0; } 171 | 172 | /* Captions */ 173 | .iis-has-captions .iis-slide { text-indent: 0; } 174 | .iis-caption { 175 | position: absolute; 176 | left: 5%; 177 | bottom: 5%; 178 | max-width: 90%; 179 | z-index: 10; 180 | background: #000; 181 | background: rgba(0,0,0,0.5); 182 | padding: 5px 15px; 183 | border-radius: 10px; 184 | font: 14px/1.6em "Helvetica Neue", Helvetica, Arial, sans-serif; 185 | color: #fff; 186 | -webkit-box-sizing: border-box; 187 | -moz-box-sizing: border-box; 188 | box-sizing: border-box; 189 | } 190 | .iis-has-bullet-nav .iis-caption { max-width: 42%; } 191 | .iis-caption .iis-caption-title { font-weight: bold; } 192 | .iis-caption .iis-caption-content { 193 | font-size: 13px; 194 | line-height: 1.6em; 195 | color: #eee; 196 | } 197 | .iis-caption .iis-caption-content a, 198 | .iis-caption .iis-caption-content a:visited { 199 | color: #eee; 200 | text-decoration: underline; 201 | border: 0; 202 | } 203 | .iis-caption .iis-caption-content a:hover, 204 | .iis-caption .iis-caption-content a:active { 205 | color: #fff; 206 | } 207 | ul, ul li { 208 | list-style: none; 209 | margin: 20px 0; 210 | } 211 | .iis-bullet-nav { 212 | right: 1%; 213 | bottom: 1%; 214 | opacity: 0.001 215 | } 216 | .iis-bullet-nav a { 217 | background: #fff; 218 | width:15px; 219 | height:15px; 220 | } 221 | 222 | .iis-bullet-nav a.iis-bullet-active, .iis-bullet-nav a:hover { 223 | background: #000; 224 | border-color: #fff; 225 | } 226 | -------------------------------------------------------------------------------- /js/prism.js: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.13.0 2 | http://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+bash */ 3 | var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){if(m&&b!=t.length-1){h.lastIndex=k;var _=h.exec(e);if(!_)break;for(var j=_.index+(d?_[1].length:0),P=_.index+_[0].length,A=b,x=k,O=t.length;O>A&&(P>x||!t[A].type&&!t[A-1].greedy);++A)x+=t[A].length,j>=x&&(++b,k=x);if(t[b]instanceof s)continue;I=A-b,w=e.slice(k,x),_.index-=k}else{h.lastIndex=0;var _=h.exec(w),I=1}if(_){d&&(p=_[1]?_[1].length:0);var j=_.index+p,_=_[0].slice(p),P=j+_.length,N=w.slice(0,j),S=w.slice(P),C=[b,I];N&&(++b,k+=N.length,C.push(N));var E=new s(u,f?n.tokenize(_,f):_,y,_,m);if(C.push(E),S&&C.push(S),Array.prototype.splice.apply(t,C),1!=I&&n.matchGrammar(e,t,r,b,k,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); 4 | Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; 5 | Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); 6 | Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; 7 | Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; 8 | !function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,"function":{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},"boolean":{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a.string=e.languages.bash.string,a["function"]=e.languages.bash["function"],a.keyword=e.languages.bash.keyword,a.boolean=e.languages.bash.boolean,a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation,e.languages.shell=e.languages.bash}(Prism); 9 | --------------------------------------------------------------------------------