Mbed OS version of IoT.js implementation running on GR-PEACH

ビルド方法

ビルド環境セットアップ

Host PC要件 : Ubuntu 16.04 (64-bit)



1. 以下のコマンドを実行し、下表に示すツールをインストールします。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install [Package]
PackageVersion
build-essential12.1ubuntu2
gyp0.1+20150913git1f374df9-1ubuntu1
mercurial3.7.3-1ubuntu1
cmake3.5.1-1ubuntu3
git1:2.7.4-0ubuntu1.4
python2.72.7.12-1ubuntu016.04.3
valgrind1:3.11.0-1ubuntu4.2
python-pip8.1.1-2ubuntu0.4

2. 以下のコマンドを実行してMbed OS用ビルドツール mbed CLIをインストールします。

$ sudo -H pip install mbed-cli

3. GNU Arm Embedded Toolchainをインストールします。

  • ダウンロードしたファイルを任意のディレクトリに展開します。
    (以下、展開先を${TOOLCHAIN}と記載します)

tar xjf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2
  • ツールチェインのパスを設定します。

環境変数を使用する場合

$ export GCC_ARM_ROOT=${TOOLCHAIN}/gcc-arm-none-eabi-6-2017-q2-update/bin
$ export PATH=$GCC_ARM_ROOT:$PATH

mbed CLIで指定する場合

$ mbed config -G GCC_ARM_PATH $GCC_ARM_ROOT

iotjs環境のビルド

1. 本プログラムのクローン

下記コマンドを実行し、本プログラムをクローンしてください。

$ hg clone https://HinoNaka@os.mbed.com/users/HinoNaka/code/GR-PEACH_mbed-os-iotjs/

クローンが正常に終了すると、GR-PEACH_mbed-os-iotjs という名称のディレクトリが生成されますので、下記コマンドで当該ディレクトリへ移動してください。

$ cd GR-PEACH_mbed-os-iotjs

(Optional)
GR-PEACH-mbed-os-iotjsディレクトリを指す環境変数 ROOTを設定してください。以降の記載は本環境変数が設定されているものとします。

$ export ROOT=$(PWD)

2. 作業用ディレクトリ(e.g. work)を作成し、当該ディレクトリに移動してください。

$ mkdir -p work
$ cd work

(Optional)
作業用ディレクトリを指す環境変数 WORK を設定してください。以降の記載は本環境変数 が設定されているものとします。

$ export WORK=$(PWD)

3. iotjsのソースツリーを取得します。

$ git clone https://github.com/pando-project/iotjs

クローンが正常に終了するとiotjsというディレクトリが生成されますので、当該ディレクトリに移動してください。

$cd iotjs

コミットID: acae9c8b2d40e7598b8d39b630b79113ce880a7e を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix acae9c8b2d40e7598b8d39b630b79113ce880a7e

4. mbed-osセットアップ
Mbed OSソースツリーを格納するフォルダを生成し、当該フォルダへ移動します。

$ mkdir -p $(WORK)/iotjs/src/platform/mbedos5
$ cd $(WORK)/iotjs/src/platform/mbedos5

Mbed OSのソースツリーをクローンします。

$ git clone -b mbed-os-5.9 https://github.com/ARMmbed/mbed-os.git

クローンが正常に終了するとmbed-osというディレクトリが生成されますので、当該ディレクトリに移動してください。

$ cd mbed-os

コミットID: 50bd61a4a72332baa6b1bac6caccb44dc5423309 を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix 50bd61a4a72332baa6b1bac6caccb44dc5423309

5. sd-driverの取得
下記コマンドでmbedos5ディレクトリへ移動します。

$ cd $(WORK)/iotjs/src/platform/mbedos5

sd-driverをクローンします。

$ git clone https://github.com/ARMmbed/sd-driver.git

クローンが正常終了するとsd-driverディレクトリが生成されますので、当該ディレクトリへ移動します。

$ cd sd-driver

コミットID: c8ae38fb291e086232566b0f1372cfb69c277e84 を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix c8ae38fb291e086232566b0f1372cfb69c277e84

6. mbed-gr-libsの取得
下記コマンドでmbedos5ディレクトリへ移動します。

$ cd $(WORK)/iotjs/src/platform/mbedos5

mbed-gr-libsをクローンします。

$ git clone https://github.com/d-kato/mbed-gr-libs

クローンが正常終了するとmbed-gr-libsディレクトリが生成されますので、当該ディレクトリへ移動します。

$ cd mbed-gr-libs

コミットID: d921d611d596ecaebaab49070ef82450c583309c を取得します。
(下記例では、あわせてposixというブランチを作成し、当該ブランチへ切り替えています)

$ git checkout -b posix d921d611d596ecaebaab49070ef82450c583309c

7. AsciiFONTの取得
下記コマンドでmbedos5ディレクトリへ移動します。

$ cd $(WORK)/iotjs/src/platform/mbedos5

AsciiFONTライブラリを追加します。

$ mbed add https://os.mbed.com/teams/Renesas/code/AsciiFont/

8. iotjs環境のビルド
下記コマンドでiotjs環境のビルドディレクトリに移動し、ビルドを実行します。

$ cd $(WORK)/iotjs
$ ./tools/build.py --no-snapshot

9. GR-PEACH用コードのコピー
(Optional) 既存のiotjs環境に上書きする場合、下記コマンドを実行してください。

$ rm -rf $(WORK)/iotjs/deps/posix
$ rm -rf $(WORK)/iotjs/src/ext-modules
$ rm -rf $(WORK)/iotjs/src/platform/mbedos5/iotjs_def.h

下記コマンドでGR-PEACH用コードをコピーします。

$ cp -pr $(ROOT)/src/iotjs/* $(WORK)/iotjs/

10. lwipパッチ適用
以下コマンドでlwipパッチを適用します。

$ cd $(WORK)/iotjs/src/platform/mbedos5/mbed-os
$ git apply lwip_improve.patch

11. ESP32 TRNG対応パッチ適用
以下コマンドでESP32のTRNGを活用するためのパッチを適用します。

$ cd $(WORK)/iotjs/src/platform/mbedos5/mbed-os
$ git apply trng_support.patch

12. Mbed OS版iotjs環境のビルド
下記コマンドを実行してMbed OS版iotjs環境をビルドします。
(リリースビルドの場合)

$ cd $(WORK)/iotjs/src/platform/mbedos5
$ make clean; make DEBUG=0

(デバッグビルドの場合)

$ cd $(WORK)/iotjs/src/platform/mbedos5
$ make clean; make DEBUG=1

13. ビルドが正常に終了すると、以下の通りバイナリが生成されます。
(リリースビルドの場合)

$ ls -l ${WORK}/iotjs/src/platform/mbedos5/BUILD/RZ_A1H/GCC_ARM-RELEASE/iotjs.bin

(デバッグビルドの場合)

$ ls -l ${WORK}/iotjs/src/platform/mbedos5/BUILD/RZ_A1H/GCC_ARM-DEBUG/iotjs.bin

実行方法

1. GR-PEACHにmicro SDカードを挿入します。

2. GR-PEACHのEthernetポートから遠い側のUSBポートとHost PCをマイクロUSBケーブルで接続します。

3. Host PCでGR-PEACHが『mbed:』ドライブとして認識されたら、iotjs.binをmbedドライブにコピーします。

4. ターミナルS/Wを立上げ、『mbed Serial Port』と接続します。
/media/uploads/HinoNaka/img1.jpg
シリアルポートは下記設定としてください。

Baud rate115200
Data8 bit
Paritynone
Stop1 bit
Flow controlnone

5. 正常に書込みが終了したらGR-PEACHのRESETボタンを押下します。

6. ターミナルS/W上に下記メッセージが表示されます。
/media/uploads/HinoNaka/img2.jpg

7. Enterキーを押下してコード入力モードに移行します。
/media/uploads/HinoNaka/img3.jpg

8. 実行するJavascriptコードをターミナルソフトウェアに貼り付けてEnterキーを押下すると、実行開始します。Javascriptコード例については、test/case.txtを参照ください。

Committer:
Osamu Nakamura
Date:
Thu Jul 18 10:43:16 2019 +0900
Revision:
4:52c937978bb3
Parent:
1:c3d69f309845
Remove unnecessary documents

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Osamu Nakamura 1:c3d69f309845 1 <!DOCTYPE html><html lang="ja"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description"><meta name="keywords"><meta name="robots"><title>GR-PEACH ビデオモジュール</title><style>@font-face {
Osamu Nakamura 1:c3d69f309845 2 font-family: octicons-link;
Osamu Nakamura 1:c3d69f309845 3 src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');
Osamu Nakamura 1:c3d69f309845 4 }
Osamu Nakamura 1:c3d69f309845 5
Osamu Nakamura 1:c3d69f309845 6 .markdown-body {
Osamu Nakamura 1:c3d69f309845 7 -ms-text-size-adjust: 100%;
Osamu Nakamura 1:c3d69f309845 8 -webkit-text-size-adjust: 100%;
Osamu Nakamura 1:c3d69f309845 9 line-height: 1.5;
Osamu Nakamura 1:c3d69f309845 10 color: #24292e;
Osamu Nakamura 1:c3d69f309845 11 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
Osamu Nakamura 1:c3d69f309845 12 font-size: 16px;
Osamu Nakamura 1:c3d69f309845 13 line-height: 1.5;
Osamu Nakamura 1:c3d69f309845 14 word-wrap: break-word;
Osamu Nakamura 1:c3d69f309845 15 }
Osamu Nakamura 1:c3d69f309845 16
Osamu Nakamura 1:c3d69f309845 17 .markdown-body .pl-c {
Osamu Nakamura 1:c3d69f309845 18 color: #6a737d;
Osamu Nakamura 1:c3d69f309845 19 }
Osamu Nakamura 1:c3d69f309845 20
Osamu Nakamura 1:c3d69f309845 21 .markdown-body .pl-c1,
Osamu Nakamura 1:c3d69f309845 22 .markdown-body .pl-s .pl-v {
Osamu Nakamura 1:c3d69f309845 23 color: #005cc5;
Osamu Nakamura 1:c3d69f309845 24 }
Osamu Nakamura 1:c3d69f309845 25
Osamu Nakamura 1:c3d69f309845 26 .markdown-body .pl-e,
Osamu Nakamura 1:c3d69f309845 27 .markdown-body .pl-en {
Osamu Nakamura 1:c3d69f309845 28 color: #6f42c1;
Osamu Nakamura 1:c3d69f309845 29 }
Osamu Nakamura 1:c3d69f309845 30
Osamu Nakamura 1:c3d69f309845 31 .markdown-body .pl-smi,
Osamu Nakamura 1:c3d69f309845 32 .markdown-body .pl-s .pl-s1 {
Osamu Nakamura 1:c3d69f309845 33 color: #24292e;
Osamu Nakamura 1:c3d69f309845 34 }
Osamu Nakamura 1:c3d69f309845 35
Osamu Nakamura 1:c3d69f309845 36 .markdown-body .pl-ent {
Osamu Nakamura 1:c3d69f309845 37 color: #22863a;
Osamu Nakamura 1:c3d69f309845 38 }
Osamu Nakamura 1:c3d69f309845 39
Osamu Nakamura 1:c3d69f309845 40 .markdown-body .pl-k {
Osamu Nakamura 1:c3d69f309845 41 color: #d73a49;
Osamu Nakamura 1:c3d69f309845 42 }
Osamu Nakamura 1:c3d69f309845 43
Osamu Nakamura 1:c3d69f309845 44 .markdown-body .pl-s,
Osamu Nakamura 1:c3d69f309845 45 .markdown-body .pl-pds,
Osamu Nakamura 1:c3d69f309845 46 .markdown-body .pl-s .pl-pse .pl-s1,
Osamu Nakamura 1:c3d69f309845 47 .markdown-body .pl-sr,
Osamu Nakamura 1:c3d69f309845 48 .markdown-body .pl-sr .pl-cce,
Osamu Nakamura 1:c3d69f309845 49 .markdown-body .pl-sr .pl-sre,
Osamu Nakamura 1:c3d69f309845 50 .markdown-body .pl-sr .pl-sra {
Osamu Nakamura 1:c3d69f309845 51 color: #032f62;
Osamu Nakamura 1:c3d69f309845 52 }
Osamu Nakamura 1:c3d69f309845 53
Osamu Nakamura 1:c3d69f309845 54 .markdown-body .pl-v,
Osamu Nakamura 1:c3d69f309845 55 .markdown-body .pl-smw {
Osamu Nakamura 1:c3d69f309845 56 color: #e36209;
Osamu Nakamura 1:c3d69f309845 57 }
Osamu Nakamura 1:c3d69f309845 58
Osamu Nakamura 1:c3d69f309845 59 .markdown-body .pl-bu {
Osamu Nakamura 1:c3d69f309845 60 color: #b31d28;
Osamu Nakamura 1:c3d69f309845 61 }
Osamu Nakamura 1:c3d69f309845 62
Osamu Nakamura 1:c3d69f309845 63 .markdown-body .pl-ii {
Osamu Nakamura 1:c3d69f309845 64 color: #fafbfc;
Osamu Nakamura 1:c3d69f309845 65 background-color: #b31d28;
Osamu Nakamura 1:c3d69f309845 66 }
Osamu Nakamura 1:c3d69f309845 67
Osamu Nakamura 1:c3d69f309845 68 .markdown-body .pl-c2 {
Osamu Nakamura 1:c3d69f309845 69 color: #fafbfc;
Osamu Nakamura 1:c3d69f309845 70 background-color: #d73a49;
Osamu Nakamura 1:c3d69f309845 71 }
Osamu Nakamura 1:c3d69f309845 72
Osamu Nakamura 1:c3d69f309845 73 .markdown-body .pl-c2::before {
Osamu Nakamura 1:c3d69f309845 74 content: "^M";
Osamu Nakamura 1:c3d69f309845 75 }
Osamu Nakamura 1:c3d69f309845 76
Osamu Nakamura 1:c3d69f309845 77 .markdown-body .pl-sr .pl-cce {
Osamu Nakamura 1:c3d69f309845 78 font-weight: bold;
Osamu Nakamura 1:c3d69f309845 79 color: #22863a;
Osamu Nakamura 1:c3d69f309845 80 }
Osamu Nakamura 1:c3d69f309845 81
Osamu Nakamura 1:c3d69f309845 82 .markdown-body .pl-ml {
Osamu Nakamura 1:c3d69f309845 83 color: #735c0f;
Osamu Nakamura 1:c3d69f309845 84 }
Osamu Nakamura 1:c3d69f309845 85
Osamu Nakamura 1:c3d69f309845 86 .markdown-body .pl-mh,
Osamu Nakamura 1:c3d69f309845 87 .markdown-body .pl-mh .pl-en,
Osamu Nakamura 1:c3d69f309845 88 .markdown-body .pl-ms {
Osamu Nakamura 1:c3d69f309845 89 font-weight: bold;
Osamu Nakamura 1:c3d69f309845 90 color: #005cc5;
Osamu Nakamura 1:c3d69f309845 91 }
Osamu Nakamura 1:c3d69f309845 92
Osamu Nakamura 1:c3d69f309845 93 .markdown-body .pl-mi {
Osamu Nakamura 1:c3d69f309845 94 font-style: italic;
Osamu Nakamura 1:c3d69f309845 95 color: #24292e;
Osamu Nakamura 1:c3d69f309845 96 }
Osamu Nakamura 1:c3d69f309845 97
Osamu Nakamura 1:c3d69f309845 98 .markdown-body .pl-mb {
Osamu Nakamura 1:c3d69f309845 99 font-weight: bold;
Osamu Nakamura 1:c3d69f309845 100 color: #24292e;
Osamu Nakamura 1:c3d69f309845 101 }
Osamu Nakamura 1:c3d69f309845 102
Osamu Nakamura 1:c3d69f309845 103 .markdown-body .pl-md {
Osamu Nakamura 1:c3d69f309845 104 color: #b31d28;
Osamu Nakamura 1:c3d69f309845 105 background-color: #ffeef0;
Osamu Nakamura 1:c3d69f309845 106 }
Osamu Nakamura 1:c3d69f309845 107
Osamu Nakamura 1:c3d69f309845 108 .markdown-body .pl-mi1 {
Osamu Nakamura 1:c3d69f309845 109 color: #22863a;
Osamu Nakamura 1:c3d69f309845 110 background-color: #f0fff4;
Osamu Nakamura 1:c3d69f309845 111 }
Osamu Nakamura 1:c3d69f309845 112
Osamu Nakamura 1:c3d69f309845 113 .markdown-body .pl-mc {
Osamu Nakamura 1:c3d69f309845 114 color: #e36209;
Osamu Nakamura 1:c3d69f309845 115 background-color: #ffebda;
Osamu Nakamura 1:c3d69f309845 116 }
Osamu Nakamura 1:c3d69f309845 117
Osamu Nakamura 1:c3d69f309845 118 .markdown-body .pl-mi2 {
Osamu Nakamura 1:c3d69f309845 119 color: #f6f8fa;
Osamu Nakamura 1:c3d69f309845 120 background-color: #005cc5;
Osamu Nakamura 1:c3d69f309845 121 }
Osamu Nakamura 1:c3d69f309845 122
Osamu Nakamura 1:c3d69f309845 123 .markdown-body .pl-mdr {
Osamu Nakamura 1:c3d69f309845 124 font-weight: bold;
Osamu Nakamura 1:c3d69f309845 125 color: #6f42c1;
Osamu Nakamura 1:c3d69f309845 126 }
Osamu Nakamura 1:c3d69f309845 127
Osamu Nakamura 1:c3d69f309845 128 .markdown-body .pl-ba {
Osamu Nakamura 1:c3d69f309845 129 color: #586069;
Osamu Nakamura 1:c3d69f309845 130 }
Osamu Nakamura 1:c3d69f309845 131
Osamu Nakamura 1:c3d69f309845 132 .markdown-body .pl-sg {
Osamu Nakamura 1:c3d69f309845 133 color: #959da5;
Osamu Nakamura 1:c3d69f309845 134 }
Osamu Nakamura 1:c3d69f309845 135
Osamu Nakamura 1:c3d69f309845 136 .markdown-body .pl-corl {
Osamu Nakamura 1:c3d69f309845 137 text-decoration: underline;
Osamu Nakamura 1:c3d69f309845 138 color: #032f62;
Osamu Nakamura 1:c3d69f309845 139 }
Osamu Nakamura 1:c3d69f309845 140
Osamu Nakamura 1:c3d69f309845 141 .markdown-body .octicon {
Osamu Nakamura 1:c3d69f309845 142 display: inline-block;
Osamu Nakamura 1:c3d69f309845 143 vertical-align: text-top;
Osamu Nakamura 1:c3d69f309845 144 fill: currentColor;
Osamu Nakamura 1:c3d69f309845 145 }
Osamu Nakamura 1:c3d69f309845 146
Osamu Nakamura 1:c3d69f309845 147 .markdown-body a {
Osamu Nakamura 1:c3d69f309845 148 background-color: transparent;
Osamu Nakamura 1:c3d69f309845 149 }
Osamu Nakamura 1:c3d69f309845 150
Osamu Nakamura 1:c3d69f309845 151 .markdown-body a:active,
Osamu Nakamura 1:c3d69f309845 152 .markdown-body a:hover {
Osamu Nakamura 1:c3d69f309845 153 outline-width: 0;
Osamu Nakamura 1:c3d69f309845 154 }
Osamu Nakamura 1:c3d69f309845 155
Osamu Nakamura 1:c3d69f309845 156 .markdown-body strong {
Osamu Nakamura 1:c3d69f309845 157 font-weight: inherit;
Osamu Nakamura 1:c3d69f309845 158 }
Osamu Nakamura 1:c3d69f309845 159
Osamu Nakamura 1:c3d69f309845 160 .markdown-body strong {
Osamu Nakamura 1:c3d69f309845 161 font-weight: bolder;
Osamu Nakamura 1:c3d69f309845 162 }
Osamu Nakamura 1:c3d69f309845 163
Osamu Nakamura 1:c3d69f309845 164 .markdown-body h1 {
Osamu Nakamura 1:c3d69f309845 165 font-size: 2em;
Osamu Nakamura 1:c3d69f309845 166 margin: 0.67em 0;
Osamu Nakamura 1:c3d69f309845 167 }
Osamu Nakamura 1:c3d69f309845 168
Osamu Nakamura 1:c3d69f309845 169 .markdown-body img {
Osamu Nakamura 1:c3d69f309845 170 border-style: none;
Osamu Nakamura 1:c3d69f309845 171 }
Osamu Nakamura 1:c3d69f309845 172
Osamu Nakamura 1:c3d69f309845 173 .markdown-body code,
Osamu Nakamura 1:c3d69f309845 174 .markdown-body kbd,
Osamu Nakamura 1:c3d69f309845 175 .markdown-body pre {
Osamu Nakamura 1:c3d69f309845 176 font-family: monospace, monospace;
Osamu Nakamura 1:c3d69f309845 177 font-size: 1em;
Osamu Nakamura 1:c3d69f309845 178 }
Osamu Nakamura 1:c3d69f309845 179
Osamu Nakamura 1:c3d69f309845 180 .markdown-body hr {
Osamu Nakamura 1:c3d69f309845 181 box-sizing: content-box;
Osamu Nakamura 1:c3d69f309845 182 height: 0;
Osamu Nakamura 1:c3d69f309845 183 overflow: visible;
Osamu Nakamura 1:c3d69f309845 184 }
Osamu Nakamura 1:c3d69f309845 185
Osamu Nakamura 1:c3d69f309845 186 .markdown-body input {
Osamu Nakamura 1:c3d69f309845 187 font: inherit;
Osamu Nakamura 1:c3d69f309845 188 margin: 0;
Osamu Nakamura 1:c3d69f309845 189 }
Osamu Nakamura 1:c3d69f309845 190
Osamu Nakamura 1:c3d69f309845 191 .markdown-body input {
Osamu Nakamura 1:c3d69f309845 192 overflow: visible;
Osamu Nakamura 1:c3d69f309845 193 }
Osamu Nakamura 1:c3d69f309845 194
Osamu Nakamura 1:c3d69f309845 195 .markdown-body [type="checkbox"] {
Osamu Nakamura 1:c3d69f309845 196 box-sizing: border-box;
Osamu Nakamura 1:c3d69f309845 197 padding: 0;
Osamu Nakamura 1:c3d69f309845 198 }
Osamu Nakamura 1:c3d69f309845 199
Osamu Nakamura 1:c3d69f309845 200 .markdown-body * {
Osamu Nakamura 1:c3d69f309845 201 box-sizing: border-box;
Osamu Nakamura 1:c3d69f309845 202 }
Osamu Nakamura 1:c3d69f309845 203
Osamu Nakamura 1:c3d69f309845 204 .markdown-body input {
Osamu Nakamura 1:c3d69f309845 205 font-family: inherit;
Osamu Nakamura 1:c3d69f309845 206 font-size: inherit;
Osamu Nakamura 1:c3d69f309845 207 line-height: inherit;
Osamu Nakamura 1:c3d69f309845 208 }
Osamu Nakamura 1:c3d69f309845 209
Osamu Nakamura 1:c3d69f309845 210 .markdown-body a {
Osamu Nakamura 1:c3d69f309845 211 color: #0366d6;
Osamu Nakamura 1:c3d69f309845 212 text-decoration: none;
Osamu Nakamura 1:c3d69f309845 213 }
Osamu Nakamura 1:c3d69f309845 214
Osamu Nakamura 1:c3d69f309845 215 .markdown-body a:hover {
Osamu Nakamura 1:c3d69f309845 216 text-decoration: underline;
Osamu Nakamura 1:c3d69f309845 217 }
Osamu Nakamura 1:c3d69f309845 218
Osamu Nakamura 1:c3d69f309845 219 .markdown-body strong {
Osamu Nakamura 1:c3d69f309845 220 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 221 }
Osamu Nakamura 1:c3d69f309845 222
Osamu Nakamura 1:c3d69f309845 223 .markdown-body hr {
Osamu Nakamura 1:c3d69f309845 224 height: 0;
Osamu Nakamura 1:c3d69f309845 225 margin: 15px 0;
Osamu Nakamura 1:c3d69f309845 226 overflow: hidden;
Osamu Nakamura 1:c3d69f309845 227 background: transparent;
Osamu Nakamura 1:c3d69f309845 228 border: 0;
Osamu Nakamura 1:c3d69f309845 229 border-bottom: 1px solid #dfe2e5;
Osamu Nakamura 1:c3d69f309845 230 }
Osamu Nakamura 1:c3d69f309845 231
Osamu Nakamura 1:c3d69f309845 232 .markdown-body hr::before {
Osamu Nakamura 1:c3d69f309845 233 display: table;
Osamu Nakamura 1:c3d69f309845 234 content: "";
Osamu Nakamura 1:c3d69f309845 235 }
Osamu Nakamura 1:c3d69f309845 236
Osamu Nakamura 1:c3d69f309845 237 .markdown-body hr::after {
Osamu Nakamura 1:c3d69f309845 238 display: table;
Osamu Nakamura 1:c3d69f309845 239 clear: both;
Osamu Nakamura 1:c3d69f309845 240 content: "";
Osamu Nakamura 1:c3d69f309845 241 }
Osamu Nakamura 1:c3d69f309845 242
Osamu Nakamura 1:c3d69f309845 243 .markdown-body table {
Osamu Nakamura 1:c3d69f309845 244 border-spacing: 0;
Osamu Nakamura 1:c3d69f309845 245 border-collapse: collapse;
Osamu Nakamura 1:c3d69f309845 246 }
Osamu Nakamura 1:c3d69f309845 247
Osamu Nakamura 1:c3d69f309845 248 .markdown-body td,
Osamu Nakamura 1:c3d69f309845 249 .markdown-body th {
Osamu Nakamura 1:c3d69f309845 250 padding: 0;
Osamu Nakamura 1:c3d69f309845 251 }
Osamu Nakamura 1:c3d69f309845 252
Osamu Nakamura 1:c3d69f309845 253 .markdown-body h1,
Osamu Nakamura 1:c3d69f309845 254 .markdown-body h2,
Osamu Nakamura 1:c3d69f309845 255 .markdown-body h3,
Osamu Nakamura 1:c3d69f309845 256 .markdown-body h4,
Osamu Nakamura 1:c3d69f309845 257 .markdown-body h5,
Osamu Nakamura 1:c3d69f309845 258 .markdown-body h6 {
Osamu Nakamura 1:c3d69f309845 259 margin-top: 0;
Osamu Nakamura 1:c3d69f309845 260 margin-bottom: 0;
Osamu Nakamura 1:c3d69f309845 261 }
Osamu Nakamura 1:c3d69f309845 262
Osamu Nakamura 1:c3d69f309845 263 .markdown-body h1 {
Osamu Nakamura 1:c3d69f309845 264 font-size: 32px;
Osamu Nakamura 1:c3d69f309845 265 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 266 }
Osamu Nakamura 1:c3d69f309845 267
Osamu Nakamura 1:c3d69f309845 268 .markdown-body h2 {
Osamu Nakamura 1:c3d69f309845 269 font-size: 24px;
Osamu Nakamura 1:c3d69f309845 270 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 271 }
Osamu Nakamura 1:c3d69f309845 272
Osamu Nakamura 1:c3d69f309845 273 .markdown-body h3 {
Osamu Nakamura 1:c3d69f309845 274 font-size: 20px;
Osamu Nakamura 1:c3d69f309845 275 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 276 }
Osamu Nakamura 1:c3d69f309845 277
Osamu Nakamura 1:c3d69f309845 278 .markdown-body h4 {
Osamu Nakamura 1:c3d69f309845 279 font-size: 16px;
Osamu Nakamura 1:c3d69f309845 280 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 281 }
Osamu Nakamura 1:c3d69f309845 282
Osamu Nakamura 1:c3d69f309845 283 .markdown-body h5 {
Osamu Nakamura 1:c3d69f309845 284 font-size: 14px;
Osamu Nakamura 1:c3d69f309845 285 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 286 }
Osamu Nakamura 1:c3d69f309845 287
Osamu Nakamura 1:c3d69f309845 288 .markdown-body h6 {
Osamu Nakamura 1:c3d69f309845 289 font-size: 12px;
Osamu Nakamura 1:c3d69f309845 290 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 291 }
Osamu Nakamura 1:c3d69f309845 292
Osamu Nakamura 1:c3d69f309845 293 .markdown-body p {
Osamu Nakamura 1:c3d69f309845 294 margin-top: 0;
Osamu Nakamura 1:c3d69f309845 295 margin-bottom: 10px;
Osamu Nakamura 1:c3d69f309845 296 }
Osamu Nakamura 1:c3d69f309845 297
Osamu Nakamura 1:c3d69f309845 298 .markdown-body blockquote {
Osamu Nakamura 1:c3d69f309845 299 margin: 0;
Osamu Nakamura 1:c3d69f309845 300 }
Osamu Nakamura 1:c3d69f309845 301
Osamu Nakamura 1:c3d69f309845 302 .markdown-body ul,
Osamu Nakamura 1:c3d69f309845 303 .markdown-body ol {
Osamu Nakamura 1:c3d69f309845 304 padding-left: 0;
Osamu Nakamura 1:c3d69f309845 305 margin-top: 0;
Osamu Nakamura 1:c3d69f309845 306 margin-bottom: 0;
Osamu Nakamura 1:c3d69f309845 307 }
Osamu Nakamura 1:c3d69f309845 308
Osamu Nakamura 1:c3d69f309845 309 .markdown-body ol ol,
Osamu Nakamura 1:c3d69f309845 310 .markdown-body ul ol {
Osamu Nakamura 1:c3d69f309845 311 list-style-type: lower-roman;
Osamu Nakamura 1:c3d69f309845 312 }
Osamu Nakamura 1:c3d69f309845 313
Osamu Nakamura 1:c3d69f309845 314 .markdown-body ul ul ol,
Osamu Nakamura 1:c3d69f309845 315 .markdown-body ul ol ol,
Osamu Nakamura 1:c3d69f309845 316 .markdown-body ol ul ol,
Osamu Nakamura 1:c3d69f309845 317 .markdown-body ol ol ol {
Osamu Nakamura 1:c3d69f309845 318 list-style-type: lower-alpha;
Osamu Nakamura 1:c3d69f309845 319 }
Osamu Nakamura 1:c3d69f309845 320
Osamu Nakamura 1:c3d69f309845 321 .markdown-body dd {
Osamu Nakamura 1:c3d69f309845 322 margin-left: 0;
Osamu Nakamura 1:c3d69f309845 323 }
Osamu Nakamura 1:c3d69f309845 324
Osamu Nakamura 1:c3d69f309845 325 .markdown-body code {
Osamu Nakamura 1:c3d69f309845 326 font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
Osamu Nakamura 1:c3d69f309845 327 font-size: 12px;
Osamu Nakamura 1:c3d69f309845 328 }
Osamu Nakamura 1:c3d69f309845 329
Osamu Nakamura 1:c3d69f309845 330 .markdown-body pre {
Osamu Nakamura 1:c3d69f309845 331 margin-top: 0;
Osamu Nakamura 1:c3d69f309845 332 margin-bottom: 0;
Osamu Nakamura 1:c3d69f309845 333 font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
Osamu Nakamura 1:c3d69f309845 334 font-size: 12px;
Osamu Nakamura 1:c3d69f309845 335 }
Osamu Nakamura 1:c3d69f309845 336
Osamu Nakamura 1:c3d69f309845 337 .markdown-body .octicon {
Osamu Nakamura 1:c3d69f309845 338 vertical-align: text-bottom;
Osamu Nakamura 1:c3d69f309845 339 }
Osamu Nakamura 1:c3d69f309845 340
Osamu Nakamura 1:c3d69f309845 341 .markdown-body .pl-0 {
Osamu Nakamura 1:c3d69f309845 342 padding-left: 0 !important;
Osamu Nakamura 1:c3d69f309845 343 }
Osamu Nakamura 1:c3d69f309845 344
Osamu Nakamura 1:c3d69f309845 345 .markdown-body .pl-1 {
Osamu Nakamura 1:c3d69f309845 346 padding-left: 4px !important;
Osamu Nakamura 1:c3d69f309845 347 }
Osamu Nakamura 1:c3d69f309845 348
Osamu Nakamura 1:c3d69f309845 349 .markdown-body .pl-2 {
Osamu Nakamura 1:c3d69f309845 350 padding-left: 8px !important;
Osamu Nakamura 1:c3d69f309845 351 }
Osamu Nakamura 1:c3d69f309845 352
Osamu Nakamura 1:c3d69f309845 353 .markdown-body .pl-3 {
Osamu Nakamura 1:c3d69f309845 354 padding-left: 16px !important;
Osamu Nakamura 1:c3d69f309845 355 }
Osamu Nakamura 1:c3d69f309845 356
Osamu Nakamura 1:c3d69f309845 357 .markdown-body .pl-4 {
Osamu Nakamura 1:c3d69f309845 358 padding-left: 24px !important;
Osamu Nakamura 1:c3d69f309845 359 }
Osamu Nakamura 1:c3d69f309845 360
Osamu Nakamura 1:c3d69f309845 361 .markdown-body .pl-5 {
Osamu Nakamura 1:c3d69f309845 362 padding-left: 32px !important;
Osamu Nakamura 1:c3d69f309845 363 }
Osamu Nakamura 1:c3d69f309845 364
Osamu Nakamura 1:c3d69f309845 365 .markdown-body .pl-6 {
Osamu Nakamura 1:c3d69f309845 366 padding-left: 40px !important;
Osamu Nakamura 1:c3d69f309845 367 }
Osamu Nakamura 1:c3d69f309845 368
Osamu Nakamura 1:c3d69f309845 369 .markdown-body::before {
Osamu Nakamura 1:c3d69f309845 370 display: table;
Osamu Nakamura 1:c3d69f309845 371 content: "";
Osamu Nakamura 1:c3d69f309845 372 }
Osamu Nakamura 1:c3d69f309845 373
Osamu Nakamura 1:c3d69f309845 374 .markdown-body::after {
Osamu Nakamura 1:c3d69f309845 375 display: table;
Osamu Nakamura 1:c3d69f309845 376 clear: both;
Osamu Nakamura 1:c3d69f309845 377 content: "";
Osamu Nakamura 1:c3d69f309845 378 }
Osamu Nakamura 1:c3d69f309845 379
Osamu Nakamura 1:c3d69f309845 380 .markdown-body>*:first-child {
Osamu Nakamura 1:c3d69f309845 381 margin-top: 0 !important;
Osamu Nakamura 1:c3d69f309845 382 }
Osamu Nakamura 1:c3d69f309845 383
Osamu Nakamura 1:c3d69f309845 384 .markdown-body>*:last-child {
Osamu Nakamura 1:c3d69f309845 385 margin-bottom: 0 !important;
Osamu Nakamura 1:c3d69f309845 386 }
Osamu Nakamura 1:c3d69f309845 387
Osamu Nakamura 1:c3d69f309845 388 .markdown-body a:not([href]) {
Osamu Nakamura 1:c3d69f309845 389 color: inherit;
Osamu Nakamura 1:c3d69f309845 390 text-decoration: none;
Osamu Nakamura 1:c3d69f309845 391 }
Osamu Nakamura 1:c3d69f309845 392
Osamu Nakamura 1:c3d69f309845 393 .markdown-body .anchor {
Osamu Nakamura 1:c3d69f309845 394 float: left;
Osamu Nakamura 1:c3d69f309845 395 padding-right: 4px;
Osamu Nakamura 1:c3d69f309845 396 margin-left: -20px;
Osamu Nakamura 1:c3d69f309845 397 line-height: 1;
Osamu Nakamura 1:c3d69f309845 398 }
Osamu Nakamura 1:c3d69f309845 399
Osamu Nakamura 1:c3d69f309845 400 .markdown-body .anchor:focus {
Osamu Nakamura 1:c3d69f309845 401 outline: none;
Osamu Nakamura 1:c3d69f309845 402 }
Osamu Nakamura 1:c3d69f309845 403
Osamu Nakamura 1:c3d69f309845 404 .markdown-body p,
Osamu Nakamura 1:c3d69f309845 405 .markdown-body blockquote,
Osamu Nakamura 1:c3d69f309845 406 .markdown-body ul,
Osamu Nakamura 1:c3d69f309845 407 .markdown-body ol,
Osamu Nakamura 1:c3d69f309845 408 .markdown-body dl,
Osamu Nakamura 1:c3d69f309845 409 .markdown-body table,
Osamu Nakamura 1:c3d69f309845 410 .markdown-body pre {
Osamu Nakamura 1:c3d69f309845 411 margin-top: 0;
Osamu Nakamura 1:c3d69f309845 412 margin-bottom: 16px;
Osamu Nakamura 1:c3d69f309845 413 }
Osamu Nakamura 1:c3d69f309845 414
Osamu Nakamura 1:c3d69f309845 415 .markdown-body hr {
Osamu Nakamura 1:c3d69f309845 416 height: 0.25em;
Osamu Nakamura 1:c3d69f309845 417 padding: 0;
Osamu Nakamura 1:c3d69f309845 418 margin: 24px 0;
Osamu Nakamura 1:c3d69f309845 419 background-color: #e1e4e8;
Osamu Nakamura 1:c3d69f309845 420 border: 0;
Osamu Nakamura 1:c3d69f309845 421 }
Osamu Nakamura 1:c3d69f309845 422
Osamu Nakamura 1:c3d69f309845 423 .markdown-body blockquote {
Osamu Nakamura 1:c3d69f309845 424 padding: 0 1em;
Osamu Nakamura 1:c3d69f309845 425 color: #6a737d;
Osamu Nakamura 1:c3d69f309845 426 border-left: 0.25em solid #dfe2e5;
Osamu Nakamura 1:c3d69f309845 427 }
Osamu Nakamura 1:c3d69f309845 428
Osamu Nakamura 1:c3d69f309845 429 .markdown-body blockquote>:first-child {
Osamu Nakamura 1:c3d69f309845 430 margin-top: 0;
Osamu Nakamura 1:c3d69f309845 431 }
Osamu Nakamura 1:c3d69f309845 432
Osamu Nakamura 1:c3d69f309845 433 .markdown-body blockquote>:last-child {
Osamu Nakamura 1:c3d69f309845 434 margin-bottom: 0;
Osamu Nakamura 1:c3d69f309845 435 }
Osamu Nakamura 1:c3d69f309845 436
Osamu Nakamura 1:c3d69f309845 437 .markdown-body kbd {
Osamu Nakamura 1:c3d69f309845 438 display: inline-block;
Osamu Nakamura 1:c3d69f309845 439 padding: 3px 5px;
Osamu Nakamura 1:c3d69f309845 440 font-size: 11px;
Osamu Nakamura 1:c3d69f309845 441 line-height: 10px;
Osamu Nakamura 1:c3d69f309845 442 color: #444d56;
Osamu Nakamura 1:c3d69f309845 443 vertical-align: middle;
Osamu Nakamura 1:c3d69f309845 444 background-color: #fafbfc;
Osamu Nakamura 1:c3d69f309845 445 border: solid 1px #c6cbd1;
Osamu Nakamura 1:c3d69f309845 446 border-bottom-color: #959da5;
Osamu Nakamura 1:c3d69f309845 447 border-radius: 3px;
Osamu Nakamura 1:c3d69f309845 448 box-shadow: inset 0 -1px 0 #959da5;
Osamu Nakamura 1:c3d69f309845 449 }
Osamu Nakamura 1:c3d69f309845 450
Osamu Nakamura 1:c3d69f309845 451 .markdown-body h1,
Osamu Nakamura 1:c3d69f309845 452 .markdown-body h2,
Osamu Nakamura 1:c3d69f309845 453 .markdown-body h3,
Osamu Nakamura 1:c3d69f309845 454 .markdown-body h4,
Osamu Nakamura 1:c3d69f309845 455 .markdown-body h5,
Osamu Nakamura 1:c3d69f309845 456 .markdown-body h6 {
Osamu Nakamura 1:c3d69f309845 457 margin-top: 24px;
Osamu Nakamura 1:c3d69f309845 458 margin-bottom: 16px;
Osamu Nakamura 1:c3d69f309845 459 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 460 line-height: 1.25;
Osamu Nakamura 1:c3d69f309845 461 }
Osamu Nakamura 1:c3d69f309845 462
Osamu Nakamura 1:c3d69f309845 463 .markdown-body h1 .octicon-link,
Osamu Nakamura 1:c3d69f309845 464 .markdown-body h2 .octicon-link,
Osamu Nakamura 1:c3d69f309845 465 .markdown-body h3 .octicon-link,
Osamu Nakamura 1:c3d69f309845 466 .markdown-body h4 .octicon-link,
Osamu Nakamura 1:c3d69f309845 467 .markdown-body h5 .octicon-link,
Osamu Nakamura 1:c3d69f309845 468 .markdown-body h6 .octicon-link {
Osamu Nakamura 1:c3d69f309845 469 color: #1b1f23;
Osamu Nakamura 1:c3d69f309845 470 vertical-align: middle;
Osamu Nakamura 1:c3d69f309845 471 visibility: hidden;
Osamu Nakamura 1:c3d69f309845 472 }
Osamu Nakamura 1:c3d69f309845 473
Osamu Nakamura 1:c3d69f309845 474 .markdown-body h1:hover .anchor,
Osamu Nakamura 1:c3d69f309845 475 .markdown-body h2:hover .anchor,
Osamu Nakamura 1:c3d69f309845 476 .markdown-body h3:hover .anchor,
Osamu Nakamura 1:c3d69f309845 477 .markdown-body h4:hover .anchor,
Osamu Nakamura 1:c3d69f309845 478 .markdown-body h5:hover .anchor,
Osamu Nakamura 1:c3d69f309845 479 .markdown-body h6:hover .anchor {
Osamu Nakamura 1:c3d69f309845 480 text-decoration: none;
Osamu Nakamura 1:c3d69f309845 481 }
Osamu Nakamura 1:c3d69f309845 482
Osamu Nakamura 1:c3d69f309845 483 .markdown-body h1:hover .anchor .octicon-link,
Osamu Nakamura 1:c3d69f309845 484 .markdown-body h2:hover .anchor .octicon-link,
Osamu Nakamura 1:c3d69f309845 485 .markdown-body h3:hover .anchor .octicon-link,
Osamu Nakamura 1:c3d69f309845 486 .markdown-body h4:hover .anchor .octicon-link,
Osamu Nakamura 1:c3d69f309845 487 .markdown-body h5:hover .anchor .octicon-link,
Osamu Nakamura 1:c3d69f309845 488 .markdown-body h6:hover .anchor .octicon-link {
Osamu Nakamura 1:c3d69f309845 489 visibility: visible;
Osamu Nakamura 1:c3d69f309845 490 }
Osamu Nakamura 1:c3d69f309845 491
Osamu Nakamura 1:c3d69f309845 492 .markdown-body h1 {
Osamu Nakamura 1:c3d69f309845 493 padding-bottom: 0.3em;
Osamu Nakamura 1:c3d69f309845 494 font-size: 2em;
Osamu Nakamura 1:c3d69f309845 495 border-bottom: 1px solid #eaecef;
Osamu Nakamura 1:c3d69f309845 496 }
Osamu Nakamura 1:c3d69f309845 497
Osamu Nakamura 1:c3d69f309845 498 .markdown-body h2 {
Osamu Nakamura 1:c3d69f309845 499 padding-bottom: 0.3em;
Osamu Nakamura 1:c3d69f309845 500 font-size: 1.5em;
Osamu Nakamura 1:c3d69f309845 501 border-bottom: 1px solid #eaecef;
Osamu Nakamura 1:c3d69f309845 502 }
Osamu Nakamura 1:c3d69f309845 503
Osamu Nakamura 1:c3d69f309845 504 .markdown-body h3 {
Osamu Nakamura 1:c3d69f309845 505 font-size: 1.25em;
Osamu Nakamura 1:c3d69f309845 506 }
Osamu Nakamura 1:c3d69f309845 507
Osamu Nakamura 1:c3d69f309845 508 .markdown-body h4 {
Osamu Nakamura 1:c3d69f309845 509 font-size: 1em;
Osamu Nakamura 1:c3d69f309845 510 }
Osamu Nakamura 1:c3d69f309845 511
Osamu Nakamura 1:c3d69f309845 512 .markdown-body h5 {
Osamu Nakamura 1:c3d69f309845 513 font-size: 0.875em;
Osamu Nakamura 1:c3d69f309845 514 }
Osamu Nakamura 1:c3d69f309845 515
Osamu Nakamura 1:c3d69f309845 516 .markdown-body h6 {
Osamu Nakamura 1:c3d69f309845 517 font-size: 0.85em;
Osamu Nakamura 1:c3d69f309845 518 color: #6a737d;
Osamu Nakamura 1:c3d69f309845 519 }
Osamu Nakamura 1:c3d69f309845 520
Osamu Nakamura 1:c3d69f309845 521 .markdown-body ul,
Osamu Nakamura 1:c3d69f309845 522 .markdown-body ol {
Osamu Nakamura 1:c3d69f309845 523 padding-left: 2em;
Osamu Nakamura 1:c3d69f309845 524 }
Osamu Nakamura 1:c3d69f309845 525
Osamu Nakamura 1:c3d69f309845 526 .markdown-body ul ul,
Osamu Nakamura 1:c3d69f309845 527 .markdown-body ul ol,
Osamu Nakamura 1:c3d69f309845 528 .markdown-body ol ol,
Osamu Nakamura 1:c3d69f309845 529 .markdown-body ol ul {
Osamu Nakamura 1:c3d69f309845 530 margin-top: 0;
Osamu Nakamura 1:c3d69f309845 531 margin-bottom: 0;
Osamu Nakamura 1:c3d69f309845 532 }
Osamu Nakamura 1:c3d69f309845 533
Osamu Nakamura 1:c3d69f309845 534 .markdown-body li {
Osamu Nakamura 1:c3d69f309845 535 word-wrap: break-all;
Osamu Nakamura 1:c3d69f309845 536 }
Osamu Nakamura 1:c3d69f309845 537
Osamu Nakamura 1:c3d69f309845 538 .markdown-body li>p {
Osamu Nakamura 1:c3d69f309845 539 margin-top: 16px;
Osamu Nakamura 1:c3d69f309845 540 }
Osamu Nakamura 1:c3d69f309845 541
Osamu Nakamura 1:c3d69f309845 542 .markdown-body li+li {
Osamu Nakamura 1:c3d69f309845 543 margin-top: 0.25em;
Osamu Nakamura 1:c3d69f309845 544 }
Osamu Nakamura 1:c3d69f309845 545
Osamu Nakamura 1:c3d69f309845 546 .markdown-body dl {
Osamu Nakamura 1:c3d69f309845 547 padding: 0;
Osamu Nakamura 1:c3d69f309845 548 }
Osamu Nakamura 1:c3d69f309845 549
Osamu Nakamura 1:c3d69f309845 550 .markdown-body dl dt {
Osamu Nakamura 1:c3d69f309845 551 padding: 0;
Osamu Nakamura 1:c3d69f309845 552 margin-top: 16px;
Osamu Nakamura 1:c3d69f309845 553 font-size: 1em;
Osamu Nakamura 1:c3d69f309845 554 font-style: italic;
Osamu Nakamura 1:c3d69f309845 555 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 556 }
Osamu Nakamura 1:c3d69f309845 557
Osamu Nakamura 1:c3d69f309845 558 .markdown-body dl dd {
Osamu Nakamura 1:c3d69f309845 559 padding: 0 16px;
Osamu Nakamura 1:c3d69f309845 560 margin-bottom: 16px;
Osamu Nakamura 1:c3d69f309845 561 }
Osamu Nakamura 1:c3d69f309845 562
Osamu Nakamura 1:c3d69f309845 563 .markdown-body table {
Osamu Nakamura 1:c3d69f309845 564 display: block;
Osamu Nakamura 1:c3d69f309845 565 width: 100%;
Osamu Nakamura 1:c3d69f309845 566 overflow: auto;
Osamu Nakamura 1:c3d69f309845 567 }
Osamu Nakamura 1:c3d69f309845 568
Osamu Nakamura 1:c3d69f309845 569 .markdown-body table th {
Osamu Nakamura 1:c3d69f309845 570 font-weight: 600;
Osamu Nakamura 1:c3d69f309845 571 }
Osamu Nakamura 1:c3d69f309845 572
Osamu Nakamura 1:c3d69f309845 573 .markdown-body table th,
Osamu Nakamura 1:c3d69f309845 574 .markdown-body table td {
Osamu Nakamura 1:c3d69f309845 575 padding: 6px 13px;
Osamu Nakamura 1:c3d69f309845 576 border: 1px solid #dfe2e5;
Osamu Nakamura 1:c3d69f309845 577 }
Osamu Nakamura 1:c3d69f309845 578
Osamu Nakamura 1:c3d69f309845 579 .markdown-body table tr {
Osamu Nakamura 1:c3d69f309845 580 background-color: #fff;
Osamu Nakamura 1:c3d69f309845 581 border-top: 1px solid #c6cbd1;
Osamu Nakamura 1:c3d69f309845 582 }
Osamu Nakamura 1:c3d69f309845 583
Osamu Nakamura 1:c3d69f309845 584 .markdown-body table tr:nth-child(2n) {
Osamu Nakamura 1:c3d69f309845 585 background-color: #f6f8fa;
Osamu Nakamura 1:c3d69f309845 586 }
Osamu Nakamura 1:c3d69f309845 587
Osamu Nakamura 1:c3d69f309845 588 .markdown-body img {
Osamu Nakamura 1:c3d69f309845 589 max-width: 100%;
Osamu Nakamura 1:c3d69f309845 590 box-sizing: content-box;
Osamu Nakamura 1:c3d69f309845 591 background-color: #fff;
Osamu Nakamura 1:c3d69f309845 592 }
Osamu Nakamura 1:c3d69f309845 593
Osamu Nakamura 1:c3d69f309845 594 .markdown-body img[align=right] {
Osamu Nakamura 1:c3d69f309845 595 padding-left: 20px;
Osamu Nakamura 1:c3d69f309845 596 }
Osamu Nakamura 1:c3d69f309845 597
Osamu Nakamura 1:c3d69f309845 598 .markdown-body img[align=left] {
Osamu Nakamura 1:c3d69f309845 599 padding-right: 20px;
Osamu Nakamura 1:c3d69f309845 600 }
Osamu Nakamura 1:c3d69f309845 601
Osamu Nakamura 1:c3d69f309845 602 .markdown-body code {
Osamu Nakamura 1:c3d69f309845 603 padding: 0.2em 0.4em;
Osamu Nakamura 1:c3d69f309845 604 margin: 0;
Osamu Nakamura 1:c3d69f309845 605 font-size: 85%;
Osamu Nakamura 1:c3d69f309845 606 background-color: rgba(27,31,35,0.05);
Osamu Nakamura 1:c3d69f309845 607 border-radius: 3px;
Osamu Nakamura 1:c3d69f309845 608 }
Osamu Nakamura 1:c3d69f309845 609
Osamu Nakamura 1:c3d69f309845 610 .markdown-body pre {
Osamu Nakamura 1:c3d69f309845 611 word-wrap: normal;
Osamu Nakamura 1:c3d69f309845 612 }
Osamu Nakamura 1:c3d69f309845 613
Osamu Nakamura 1:c3d69f309845 614 .markdown-body pre>code {
Osamu Nakamura 1:c3d69f309845 615 padding: 0;
Osamu Nakamura 1:c3d69f309845 616 margin: 0;
Osamu Nakamura 1:c3d69f309845 617 font-size: 100%;
Osamu Nakamura 1:c3d69f309845 618 word-break: normal;
Osamu Nakamura 1:c3d69f309845 619 white-space: pre;
Osamu Nakamura 1:c3d69f309845 620 background: transparent;
Osamu Nakamura 1:c3d69f309845 621 border: 0;
Osamu Nakamura 1:c3d69f309845 622 }
Osamu Nakamura 1:c3d69f309845 623
Osamu Nakamura 1:c3d69f309845 624 .markdown-body .highlight {
Osamu Nakamura 1:c3d69f309845 625 margin-bottom: 16px;
Osamu Nakamura 1:c3d69f309845 626 }
Osamu Nakamura 1:c3d69f309845 627
Osamu Nakamura 1:c3d69f309845 628 .markdown-body .highlight pre {
Osamu Nakamura 1:c3d69f309845 629 margin-bottom: 0;
Osamu Nakamura 1:c3d69f309845 630 word-break: normal;
Osamu Nakamura 1:c3d69f309845 631 }
Osamu Nakamura 1:c3d69f309845 632
Osamu Nakamura 1:c3d69f309845 633 .markdown-body .highlight pre,
Osamu Nakamura 1:c3d69f309845 634 .markdown-body pre {
Osamu Nakamura 1:c3d69f309845 635 padding: 16px;
Osamu Nakamura 1:c3d69f309845 636 overflow: auto;
Osamu Nakamura 1:c3d69f309845 637 font-size: 85%;
Osamu Nakamura 1:c3d69f309845 638 line-height: 1.45;
Osamu Nakamura 1:c3d69f309845 639 background-color: #f6f8fa;
Osamu Nakamura 1:c3d69f309845 640 border-radius: 3px;
Osamu Nakamura 1:c3d69f309845 641 }
Osamu Nakamura 1:c3d69f309845 642
Osamu Nakamura 1:c3d69f309845 643 .markdown-body pre code {
Osamu Nakamura 1:c3d69f309845 644 display: inline;
Osamu Nakamura 1:c3d69f309845 645 max-width: auto;
Osamu Nakamura 1:c3d69f309845 646 padding: 0;
Osamu Nakamura 1:c3d69f309845 647 margin: 0;
Osamu Nakamura 1:c3d69f309845 648 overflow: visible;
Osamu Nakamura 1:c3d69f309845 649 line-height: inherit;
Osamu Nakamura 1:c3d69f309845 650 word-wrap: normal;
Osamu Nakamura 1:c3d69f309845 651 background-color: transparent;
Osamu Nakamura 1:c3d69f309845 652 border: 0;
Osamu Nakamura 1:c3d69f309845 653 }
Osamu Nakamura 1:c3d69f309845 654
Osamu Nakamura 1:c3d69f309845 655 .markdown-body .full-commit .btn-outline:not(:disabled):hover {
Osamu Nakamura 1:c3d69f309845 656 color: #005cc5;
Osamu Nakamura 1:c3d69f309845 657 border-color: #005cc5;
Osamu Nakamura 1:c3d69f309845 658 }
Osamu Nakamura 1:c3d69f309845 659
Osamu Nakamura 1:c3d69f309845 660 .markdown-body kbd {
Osamu Nakamura 1:c3d69f309845 661 display: inline-block;
Osamu Nakamura 1:c3d69f309845 662 padding: 3px 5px;
Osamu Nakamura 1:c3d69f309845 663 font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
Osamu Nakamura 1:c3d69f309845 664 line-height: 10px;
Osamu Nakamura 1:c3d69f309845 665 color: #444d56;
Osamu Nakamura 1:c3d69f309845 666 vertical-align: middle;
Osamu Nakamura 1:c3d69f309845 667 background-color: #fafbfc;
Osamu Nakamura 1:c3d69f309845 668 border: solid 1px #d1d5da;
Osamu Nakamura 1:c3d69f309845 669 border-bottom-color: #c6cbd1;
Osamu Nakamura 1:c3d69f309845 670 border-radius: 3px;
Osamu Nakamura 1:c3d69f309845 671 box-shadow: inset 0 -1px 0 #c6cbd1;
Osamu Nakamura 1:c3d69f309845 672 }
Osamu Nakamura 1:c3d69f309845 673
Osamu Nakamura 1:c3d69f309845 674 .markdown-body :checked+.radio-label {
Osamu Nakamura 1:c3d69f309845 675 position: relative;
Osamu Nakamura 1:c3d69f309845 676 z-index: 1;
Osamu Nakamura 1:c3d69f309845 677 border-color: #0366d6;
Osamu Nakamura 1:c3d69f309845 678 }
Osamu Nakamura 1:c3d69f309845 679
Osamu Nakamura 1:c3d69f309845 680 .markdown-body .task-list-item {
Osamu Nakamura 1:c3d69f309845 681 list-style-type: none;
Osamu Nakamura 1:c3d69f309845 682 }
Osamu Nakamura 1:c3d69f309845 683
Osamu Nakamura 1:c3d69f309845 684 .markdown-body .task-list-item+.task-list-item {
Osamu Nakamura 1:c3d69f309845 685 margin-top: 3px;
Osamu Nakamura 1:c3d69f309845 686 }
Osamu Nakamura 1:c3d69f309845 687
Osamu Nakamura 1:c3d69f309845 688 .markdown-body .task-list-item input {
Osamu Nakamura 1:c3d69f309845 689 margin: 0 0.2em 0.25em -1.6em;
Osamu Nakamura 1:c3d69f309845 690 vertical-align: middle;
Osamu Nakamura 1:c3d69f309845 691 }
Osamu Nakamura 1:c3d69f309845 692
Osamu Nakamura 1:c3d69f309845 693 .markdown-body hr {
Osamu Nakamura 1:c3d69f309845 694 border-bottom-color: #eee;
Osamu Nakamura 1:c3d69f309845 695 }
Osamu Nakamura 1:c3d69f309845 696 /*
Osamu Nakamura 1:c3d69f309845 697
Osamu Nakamura 1:c3d69f309845 698 Sunburst-like style (c) Vasily Polovnyov <vast@whiteants.net>
Osamu Nakamura 1:c3d69f309845 699
Osamu Nakamura 1:c3d69f309845 700 */
Osamu Nakamura 1:c3d69f309845 701
Osamu Nakamura 1:c3d69f309845 702 .hljs {
Osamu Nakamura 1:c3d69f309845 703 display: block;
Osamu Nakamura 1:c3d69f309845 704 overflow-x: auto;
Osamu Nakamura 1:c3d69f309845 705 padding: 0.5em;
Osamu Nakamura 1:c3d69f309845 706 background: #000;
Osamu Nakamura 1:c3d69f309845 707 color: #f8f8f8;
Osamu Nakamura 1:c3d69f309845 708 }
Osamu Nakamura 1:c3d69f309845 709
Osamu Nakamura 1:c3d69f309845 710 .hljs-comment,
Osamu Nakamura 1:c3d69f309845 711 .hljs-quote {
Osamu Nakamura 1:c3d69f309845 712 color: #aeaeae;
Osamu Nakamura 1:c3d69f309845 713 font-style: italic;
Osamu Nakamura 1:c3d69f309845 714 }
Osamu Nakamura 1:c3d69f309845 715
Osamu Nakamura 1:c3d69f309845 716 .hljs-keyword,
Osamu Nakamura 1:c3d69f309845 717 .hljs-selector-tag,
Osamu Nakamura 1:c3d69f309845 718 .hljs-type {
Osamu Nakamura 1:c3d69f309845 719 color: #e28964;
Osamu Nakamura 1:c3d69f309845 720 }
Osamu Nakamura 1:c3d69f309845 721
Osamu Nakamura 1:c3d69f309845 722 .hljs-string {
Osamu Nakamura 1:c3d69f309845 723 color: #65b042;
Osamu Nakamura 1:c3d69f309845 724 }
Osamu Nakamura 1:c3d69f309845 725
Osamu Nakamura 1:c3d69f309845 726 .hljs-subst {
Osamu Nakamura 1:c3d69f309845 727 color: #daefa3;
Osamu Nakamura 1:c3d69f309845 728 }
Osamu Nakamura 1:c3d69f309845 729
Osamu Nakamura 1:c3d69f309845 730 .hljs-regexp,
Osamu Nakamura 1:c3d69f309845 731 .hljs-link {
Osamu Nakamura 1:c3d69f309845 732 color: #e9c062;
Osamu Nakamura 1:c3d69f309845 733 }
Osamu Nakamura 1:c3d69f309845 734
Osamu Nakamura 1:c3d69f309845 735 .hljs-title,
Osamu Nakamura 1:c3d69f309845 736 .hljs-section,
Osamu Nakamura 1:c3d69f309845 737 .hljs-tag,
Osamu Nakamura 1:c3d69f309845 738 .hljs-name {
Osamu Nakamura 1:c3d69f309845 739 color: #89bdff;
Osamu Nakamura 1:c3d69f309845 740 }
Osamu Nakamura 1:c3d69f309845 741
Osamu Nakamura 1:c3d69f309845 742 .hljs-class .hljs-title,
Osamu Nakamura 1:c3d69f309845 743 .hljs-doctag {
Osamu Nakamura 1:c3d69f309845 744 text-decoration: underline;
Osamu Nakamura 1:c3d69f309845 745 }
Osamu Nakamura 1:c3d69f309845 746
Osamu Nakamura 1:c3d69f309845 747 .hljs-symbol,
Osamu Nakamura 1:c3d69f309845 748 .hljs-bullet,
Osamu Nakamura 1:c3d69f309845 749 .hljs-number {
Osamu Nakamura 1:c3d69f309845 750 color: #3387cc;
Osamu Nakamura 1:c3d69f309845 751 }
Osamu Nakamura 1:c3d69f309845 752
Osamu Nakamura 1:c3d69f309845 753 .hljs-params,
Osamu Nakamura 1:c3d69f309845 754 .hljs-variable,
Osamu Nakamura 1:c3d69f309845 755 .hljs-template-variable {
Osamu Nakamura 1:c3d69f309845 756 color: #3e87e3;
Osamu Nakamura 1:c3d69f309845 757 }
Osamu Nakamura 1:c3d69f309845 758
Osamu Nakamura 1:c3d69f309845 759 .hljs-attribute {
Osamu Nakamura 1:c3d69f309845 760 color: #cda869;
Osamu Nakamura 1:c3d69f309845 761 }
Osamu Nakamura 1:c3d69f309845 762
Osamu Nakamura 1:c3d69f309845 763 .hljs-meta {
Osamu Nakamura 1:c3d69f309845 764 color: #8996a8;
Osamu Nakamura 1:c3d69f309845 765 }
Osamu Nakamura 1:c3d69f309845 766
Osamu Nakamura 1:c3d69f309845 767 .hljs-formula {
Osamu Nakamura 1:c3d69f309845 768 background-color: #0e2231;
Osamu Nakamura 1:c3d69f309845 769 color: #f8f8f8;
Osamu Nakamura 1:c3d69f309845 770 font-style: italic;
Osamu Nakamura 1:c3d69f309845 771 }
Osamu Nakamura 1:c3d69f309845 772
Osamu Nakamura 1:c3d69f309845 773 .hljs-addition {
Osamu Nakamura 1:c3d69f309845 774 background-color: #253b22;
Osamu Nakamura 1:c3d69f309845 775 color: #f8f8f8;
Osamu Nakamura 1:c3d69f309845 776 }
Osamu Nakamura 1:c3d69f309845 777
Osamu Nakamura 1:c3d69f309845 778 .hljs-deletion {
Osamu Nakamura 1:c3d69f309845 779 background-color: #420e09;
Osamu Nakamura 1:c3d69f309845 780 color: #f8f8f8;
Osamu Nakamura 1:c3d69f309845 781 }
Osamu Nakamura 1:c3d69f309845 782
Osamu Nakamura 1:c3d69f309845 783 .hljs-selector-class {
Osamu Nakamura 1:c3d69f309845 784 color: #9b703f;
Osamu Nakamura 1:c3d69f309845 785 }
Osamu Nakamura 1:c3d69f309845 786
Osamu Nakamura 1:c3d69f309845 787 .hljs-selector-id {
Osamu Nakamura 1:c3d69f309845 788 color: #8b98ab;
Osamu Nakamura 1:c3d69f309845 789 }
Osamu Nakamura 1:c3d69f309845 790
Osamu Nakamura 1:c3d69f309845 791 .hljs-emphasis {
Osamu Nakamura 1:c3d69f309845 792 font-style: italic;
Osamu Nakamura 1:c3d69f309845 793 }
Osamu Nakamura 1:c3d69f309845 794
Osamu Nakamura 1:c3d69f309845 795 .hljs-strong {
Osamu Nakamura 1:c3d69f309845 796 font-weight: bold;
Osamu Nakamura 1:c3d69f309845 797 }
Osamu Nakamura 1:c3d69f309845 798 </style></head><body class="markdown-body"><h1 id="gr-peach-video-">GR-PEACH ビデオモジュール (video)</h1>
Osamu Nakamura 1:c3d69f309845 799 <p><code>video</code> モジュールは、WIRELESS CAMERA Shieldに接続されたカメラの制御や映像信号の取り込みを行います。</p>
Osamu Nakamura 1:c3d69f309845 800 <ul>
Osamu Nakamura 1:c3d69f309845 801 <li>対応するカメラは以下の通りです。<ul>
Osamu Nakamura 1:c3d69f309845 802 <li><code>&quot;ov7725&quot;</code> - <a href="https://www.core.co.jp/product/m2m/gr-peach/audio-camera.html">GR-PEACH Wireless CAMERA Shield</a></li>
Osamu Nakamura 1:c3d69f309845 803 </ul>
Osamu Nakamura 1:c3d69f309845 804 </li>
Osamu Nakamura 1:c3d69f309845 805 </ul>
Osamu Nakamura 1:c3d69f309845 806 <p>画像の取り込みは、マイコンに搭載されたハードウェアリソース(VDC5)を用いてプログラムとは非同期に実行されます。 </p>
Osamu Nakamura 1:c3d69f309845 807 <h2 id="video-opencmoscamera-config-callback-">video.openCMOSCamera(config, callback)</h2>
Osamu Nakamura 1:c3d69f309845 808 <ul>
Osamu Nakamura 1:c3d69f309845 809 <li><code>config</code> {Object} カメラの設定<ul>
Osamu Nakamura 1:c3d69f309845 810 <li><code>width</code> {number} 画像の横幅(ピクセル数)。必須項目です。</li>
Osamu Nakamura 1:c3d69f309845 811 <li><code>height</code> {number} 画像の高さ(ピクセル数)。必須項目です。</li>
Osamu Nakamura 1:c3d69f309845 812 <li><code>format</code> {string} 希望するピクセルフォーマット。<code>&quot;ycbcr422&quot;</code>, <code>&quot;rgb565&quot;</code>, <code>&quot;rgb888&quot;</code>のいずれかが指定できます。必須項目です。</li>
Osamu Nakamura 1:c3d69f309845 813 <li><code>type</code> {string} CMOSカメラの種類を示す文字列。<code>&quot;ov7725&quot;</code>のみ指定できます。(省略時: <code>&quot;ov7725&quot;</code>)</li>
Osamu Nakamura 1:c3d69f309845 814 </ul>
Osamu Nakamura 1:c3d69f309845 815 </li>
Osamu Nakamura 1:c3d69f309845 816 <li><code>callback</code> {Function} コールバック関数<ul>
Osamu Nakamura 1:c3d69f309845 817 <li><code>err</code> {Error|null} エラーオブジェクト(失敗のとき) または <code>null</code>(成功のとき)。</li>
Osamu Nakamura 1:c3d69f309845 818 <li><code>videoSource</code> {Object} <code>VideoSource</code>クラスのインスタンス (成功のとき)</li>
Osamu Nakamura 1:c3d69f309845 819 </ul>
Osamu Nakamura 1:c3d69f309845 820 </li>
Osamu Nakamura 1:c3d69f309845 821 <li>戻り値: {undefined}</li>
Osamu Nakamura 1:c3d69f309845 822 </ul>
Osamu Nakamura 1:c3d69f309845 823 <p>CMOSカメラに接続します。処理は非同期で行われ、処理が完了または失敗すると、コールバック関数が呼び出されます。</p>
Osamu Nakamura 1:c3d69f309845 824 <!--
Osamu Nakamura 1:c3d69f309845 825 * C++ライブラリ側API
Osamu Nakamura 1:c3d69f309845 826 * Display.Graphics_Video_init
Osamu Nakamura 1:c3d69f309845 827 * Display.Graphics_Dvinput_Port_Init
Osamu Nakamura 1:c3d69f309845 828 * Display.Graphics_Irq_Handler_Set (★graphicsとハンドラを共用する)
Osamu Nakamura 1:c3d69f309845 829 * Display.Video_Write_Setting
Osamu Nakamura 1:c3d69f309845 830 -->
Osamu Nakamura 1:c3d69f309845 831 <blockquote>
Osamu Nakamura 1:c3d69f309845 832 <p><strong>注意</strong>: ハードウェアリソースを排他で使用するため、複数の<code>VideoSource</code>インスタンスを同時に使用することはできません。別のカメラを接続する場合は、先に生成されたインスタンスに対して<code>close()</code>を実行してください。</p>
Osamu Nakamura 1:c3d69f309845 833 </blockquote>
Osamu Nakamura 1:c3d69f309845 834 <h4 id="-">使用例</h4>
Osamu Nakamura 1:c3d69f309845 835 <pre><code class="lang-javascript"><span class="hljs-keyword">var</span> video = <span class="hljs-built_in">require</span>(<span class="hljs-string">'video'</span>);
Osamu Nakamura 1:c3d69f309845 836 <span class="hljs-keyword">var</span> AlignedBuffer = <span class="hljs-built_in">require</span>(<span class="hljs-string">'aligned_buffer'</span>).AlignedBuffer;
Osamu Nakamura 1:c3d69f309845 837 <span class="hljs-keyword">var</span> buf = <span class="hljs-keyword">new</span> AlignedBuffer(<span class="hljs-number">480</span>*<span class="hljs-number">272</span>*<span class="hljs-number">2</span>, <span class="hljs-number">32</span>);
Osamu Nakamura 1:c3d69f309845 838
Osamu Nakamura 1:c3d69f309845 839 video.openCMOSCamera({
Osamu Nakamura 1:c3d69f309845 840 <span class="hljs-attr">width</span>: <span class="hljs-number">480</span>, <span class="hljs-attr">height</span>: <span class="hljs-number">272</span>, <span class="hljs-attr">format</span>: <span class="hljs-string">'rgb565'</span>, <span class="hljs-attr">type</span>: <span class="hljs-string">'ov7725'</span>
Osamu Nakamura 1:c3d69f309845 841 }, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">err, videoSource</span>) </span>{
Osamu Nakamura 1:c3d69f309845 842 <span class="hljs-keyword">if</span> (err) {
Osamu Nakamura 1:c3d69f309845 843 <span class="hljs-comment">/* video.openCMOSCamera 失敗... */</span>
Osamu Nakamura 1:c3d69f309845 844 <span class="hljs-built_in">console</span>.log(err);
Osamu Nakamura 1:c3d69f309845 845 <span class="hljs-keyword">return</span>;
Osamu Nakamura 1:c3d69f309845 846 }
Osamu Nakamura 1:c3d69f309845 847 <span class="hljs-comment">/* video.openCMOSCamera 成功... */</span>
Osamu Nakamura 1:c3d69f309845 848
Osamu Nakamura 1:c3d69f309845 849 videoSource.start(buf, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">err</span>) </span>{
Osamu Nakamura 1:c3d69f309845 850 <span class="hljs-keyword">if</span> (err) {
Osamu Nakamura 1:c3d69f309845 851 <span class="hljs-comment">/* videoSource.start 失敗... */</span>
Osamu Nakamura 1:c3d69f309845 852 <span class="hljs-built_in">console</span>.log(err);
Osamu Nakamura 1:c3d69f309845 853 <span class="hljs-keyword">return</span>;
Osamu Nakamura 1:c3d69f309845 854 }
Osamu Nakamura 1:c3d69f309845 855 <span class="hljs-comment">/* videoSource.start 成功... */</span>
Osamu Nakamura 1:c3d69f309845 856
Osamu Nakamura 1:c3d69f309845 857 videoSource.stop(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">err</span>) </span>{
Osamu Nakamura 1:c3d69f309845 858 <span class="hljs-keyword">if</span> (err) {
Osamu Nakamura 1:c3d69f309845 859 <span class="hljs-comment">/* videoSource.stop 失敗... */</span>
Osamu Nakamura 1:c3d69f309845 860 <span class="hljs-built_in">console</span>.log(err);
Osamu Nakamura 1:c3d69f309845 861 <span class="hljs-keyword">return</span>;
Osamu Nakamura 1:c3d69f309845 862 }
Osamu Nakamura 1:c3d69f309845 863 <span class="hljs-comment">/* videoSource.stop 成功... */</span>
Osamu Nakamura 1:c3d69f309845 864
Osamu Nakamura 1:c3d69f309845 865 videoSource.close(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">err</span>) </span>{
Osamu Nakamura 1:c3d69f309845 866 <span class="hljs-keyword">if</span> (err) {
Osamu Nakamura 1:c3d69f309845 867 <span class="hljs-comment">/* videoSource.close 失敗... */</span>
Osamu Nakamura 1:c3d69f309845 868 <span class="hljs-built_in">console</span>.log(err);
Osamu Nakamura 1:c3d69f309845 869 <span class="hljs-keyword">return</span>;
Osamu Nakamura 1:c3d69f309845 870 }
Osamu Nakamura 1:c3d69f309845 871 <span class="hljs-comment">/* videoSource.close 成功... */</span>
Osamu Nakamura 1:c3d69f309845 872
Osamu Nakamura 1:c3d69f309845 873 });
Osamu Nakamura 1:c3d69f309845 874 });
Osamu Nakamura 1:c3d69f309845 875 });
Osamu Nakamura 1:c3d69f309845 876 });
Osamu Nakamura 1:c3d69f309845 877 </code></pre>
Osamu Nakamura 1:c3d69f309845 878 <h2 id="video-opencmoscamerasync-config-">video.openCMOSCameraSync(config)</h2>
Osamu Nakamura 1:c3d69f309845 879 <ul>
Osamu Nakamura 1:c3d69f309845 880 <li><code>config</code> {Object} カメラの設定<ul>
Osamu Nakamura 1:c3d69f309845 881 <li><code>video.openCMOSCamera()</code>の説明を参照</li>
Osamu Nakamura 1:c3d69f309845 882 </ul>
Osamu Nakamura 1:c3d69f309845 883 </li>
Osamu Nakamura 1:c3d69f309845 884 <li>戻り値: {Object} <code>VideoSource</code>クラスのインスタンス</li>
Osamu Nakamura 1:c3d69f309845 885 </ul>
Osamu Nakamura 1:c3d69f309845 886 <p><code>video.openCMOSCamera()</code>の同期版です。処理は同期で行われ、処理が完了すると<code>VideoSource</code>クラスのインスタンスを返却します。失敗すると例外をスローします。</p>
Osamu Nakamura 1:c3d69f309845 887 <h4 id="-">使用例</h4>
Osamu Nakamura 1:c3d69f309845 888 <pre><code class="lang-javascript"><span class="hljs-keyword">var</span> video = <span class="hljs-built_in">require</span>(<span class="hljs-string">'video'</span>);
Osamu Nakamura 1:c3d69f309845 889 <span class="hljs-keyword">var</span> AlignedBuffer = <span class="hljs-built_in">require</span>(<span class="hljs-string">'aligned_buffer'</span>).AlignedBuffer;
Osamu Nakamura 1:c3d69f309845 890 <span class="hljs-keyword">var</span> buf = <span class="hljs-keyword">new</span> AlignedBuffer(<span class="hljs-number">480</span>*<span class="hljs-number">272</span>*<span class="hljs-number">2</span>, <span class="hljs-number">32</span>);
Osamu Nakamura 1:c3d69f309845 891
Osamu Nakamura 1:c3d69f309845 892 <span class="hljs-keyword">try</span> {
Osamu Nakamura 1:c3d69f309845 893 <span class="hljs-keyword">var</span> videoSource = video.openCMOSCameraSync({
Osamu Nakamura 1:c3d69f309845 894 <span class="hljs-attr">width</span>: <span class="hljs-number">480</span>, <span class="hljs-attr">height</span>: <span class="hljs-number">272</span>, <span class="hljs-attr">format</span>: <span class="hljs-string">'rgb565'</span>, <span class="hljs-attr">type</span>: <span class="hljs-string">'ov7725'</span>
Osamu Nakamura 1:c3d69f309845 895 });
Osamu Nakamura 1:c3d69f309845 896 <span class="hljs-comment">/* video.openCMOSCameraSync 成功... */</span>
Osamu Nakamura 1:c3d69f309845 897
Osamu Nakamura 1:c3d69f309845 898 videoSource.startSync(buf);
Osamu Nakamura 1:c3d69f309845 899 <span class="hljs-comment">/* videoSource.startSync 成功... */</span>
Osamu Nakamura 1:c3d69f309845 900
Osamu Nakamura 1:c3d69f309845 901 videoSource.stopSync();
Osamu Nakamura 1:c3d69f309845 902 <span class="hljs-comment">/* videoSource.stopSync 成功... */</span>
Osamu Nakamura 1:c3d69f309845 903
Osamu Nakamura 1:c3d69f309845 904 videoSource.closeSync();
Osamu Nakamura 1:c3d69f309845 905 <span class="hljs-comment">/* videoSource.closeSync 成功... */</span>
Osamu Nakamura 1:c3d69f309845 906
Osamu Nakamura 1:c3d69f309845 907 } <span class="hljs-keyword">catch</span> (err) {
Osamu Nakamura 1:c3d69f309845 908 <span class="hljs-comment">/* 失敗... */</span>
Osamu Nakamura 1:c3d69f309845 909 <span class="hljs-built_in">console</span>.log(err);
Osamu Nakamura 1:c3d69f309845 910 }
Osamu Nakamura 1:c3d69f309845 911 </code></pre>
Osamu Nakamura 1:c3d69f309845 912 <h1 id="videosource-">VideoSourceクラス</h1>
Osamu Nakamura 1:c3d69f309845 913 <p>カメラの制御や映像ソースの取り込みを行うクラスです。</p>
Osamu Nakamura 1:c3d69f309845 914 <h2 id="videosource-width">videoSource.width</h2>
Osamu Nakamura 1:c3d69f309845 915 <ul>
Osamu Nakamura 1:c3d69f309845 916 <li>{number}</li>
Osamu Nakamura 1:c3d69f309845 917 <li>画像の幅をピクセル数で示す、読み取り専用プロパティです。</li>
Osamu Nakamura 1:c3d69f309845 918 </ul>
Osamu Nakamura 1:c3d69f309845 919 <h2 id="videosource-height">videoSource.height</h2>
Osamu Nakamura 1:c3d69f309845 920 <ul>
Osamu Nakamura 1:c3d69f309845 921 <li>{number}</li>
Osamu Nakamura 1:c3d69f309845 922 <li>画像の高さをピクセル数で示す、読み取り専用プロパティです。</li>
Osamu Nakamura 1:c3d69f309845 923 </ul>
Osamu Nakamura 1:c3d69f309845 924 <h2 id="videosource-pixelformat">videoSource.pixelFormat</h2>
Osamu Nakamura 1:c3d69f309845 925 <ul>
Osamu Nakamura 1:c3d69f309845 926 <li>{string}</li>
Osamu Nakamura 1:c3d69f309845 927 <li>ピクセルフォーマットを示す、読み取り専用プロパティです。<code>&quot;ycbcr422&quot;</code>, <code>&quot;rgb565&quot;</code>, <code>&quot;rgb888&quot;</code>のいずれかです。</li>
Osamu Nakamura 1:c3d69f309845 928 </ul>
Osamu Nakamura 1:c3d69f309845 929 <h2 id="videosource-pixelbytes">videoSource.pixelBytes</h2>
Osamu Nakamura 1:c3d69f309845 930 <ul>
Osamu Nakamura 1:c3d69f309845 931 <li>{number}</li>
Osamu Nakamura 1:c3d69f309845 932 <li>1ピクセル当たりのバイト数を示す、読み取り専用プロパティです。</li>
Osamu Nakamura 1:c3d69f309845 933 </ul>
Osamu Nakamura 1:c3d69f309845 934 <h2 id="videosource-type">videoSource.type</h2>
Osamu Nakamura 1:c3d69f309845 935 <ul>
Osamu Nakamura 1:c3d69f309845 936 <li>{string}</li>
Osamu Nakamura 1:c3d69f309845 937 <li>CMOSカメラの種類を示す文字列を返す、読み取り専用プロパティです。</li>
Osamu Nakamura 1:c3d69f309845 938 </ul>
Osamu Nakamura 1:c3d69f309845 939 <h2 id="videosource-start-buf-callback-">videoSource.start(buf, callback)</h2>
Osamu Nakamura 1:c3d69f309845 940 <ul>
Osamu Nakamura 1:c3d69f309845 941 <li><code>buf</code> {AlignedBuffer} カメラ入力を取り込むバッファ。32バイトのアライメントである必要があります。</li>
Osamu Nakamura 1:c3d69f309845 942 <li><code>callback</code> {Function} コールバック関数<ul>
Osamu Nakamura 1:c3d69f309845 943 <li><code>err</code> {Error|null} エラーオブジェクト(失敗のとき) または <code>null</code>(成功のとき)。</li>
Osamu Nakamura 1:c3d69f309845 944 </ul>
Osamu Nakamura 1:c3d69f309845 945 </li>
Osamu Nakamura 1:c3d69f309845 946 <li>戻り値: {undefined}</li>
Osamu Nakamura 1:c3d69f309845 947 </ul>
Osamu Nakamura 1:c3d69f309845 948 <p>カメラの撮影/信号の取り込みを開始します。処理は非同期で行われ、処理が完了または失敗すると、コールバック関数が呼び出されます。</p>
Osamu Nakamura 1:c3d69f309845 949 <!--
Osamu Nakamura 1:c3d69f309845 950 * C++ライブラリ側API
Osamu Nakamura 1:c3d69f309845 951 * Display.Video_Start
Osamu Nakamura 1:c3d69f309845 952 * Display.Video_Stop
Osamu Nakamura 1:c3d69f309845 953 -->
Osamu Nakamura 1:c3d69f309845 954 <h2 id="videosource-startsync-buf-">videoSource.startSync(buf)</h2>
Osamu Nakamura 1:c3d69f309845 955 <ul>
Osamu Nakamura 1:c3d69f309845 956 <li><code>buf</code> {AlignedBuffer} カメラ入力を取り込むバッファ。32バイトのアライメントである必要があります。</li>
Osamu Nakamura 1:c3d69f309845 957 <li>戻り値: {undefined}</li>
Osamu Nakamura 1:c3d69f309845 958 </ul>
Osamu Nakamura 1:c3d69f309845 959 <p><code>videoSource.start()</code>の同期版です。処理は非同期で行われ、処理が完了すると呼び出し元に戻ります。失敗すると例外をスローします。</p>
Osamu Nakamura 1:c3d69f309845 960 <h2 id="videosource-stop-callback-">videoSource.stop(callback)</h2>
Osamu Nakamura 1:c3d69f309845 961 <ul>
Osamu Nakamura 1:c3d69f309845 962 <li><code>callback</code> {Function} コールバック関数<ul>
Osamu Nakamura 1:c3d69f309845 963 <li><code>err</code> {Error|null} エラーオブジェクト(失敗のとき) または <code>null</code>(成功のとき)。</li>
Osamu Nakamura 1:c3d69f309845 964 </ul>
Osamu Nakamura 1:c3d69f309845 965 </li>
Osamu Nakamura 1:c3d69f309845 966 <li>戻り値: {undefined}</li>
Osamu Nakamura 1:c3d69f309845 967 </ul>
Osamu Nakamura 1:c3d69f309845 968 <p>カメラの撮影/信号の取り込みを停止します。処理は非同期で行われ、処理が完了または失敗すると、コールバック関数が呼び出されます。</p>
Osamu Nakamura 1:c3d69f309845 969 <!--
Osamu Nakamura 1:c3d69f309845 970 * C++ライブラリ側API
Osamu Nakamura 1:c3d69f309845 971 * Display.Video_Stop
Osamu Nakamura 1:c3d69f309845 972 -->
Osamu Nakamura 1:c3d69f309845 973 <h2 id="videosource-stopsync-">videoSource.stopSync()</h2>
Osamu Nakamura 1:c3d69f309845 974 <ul>
Osamu Nakamura 1:c3d69f309845 975 <li>戻り値: {undefined}</li>
Osamu Nakamura 1:c3d69f309845 976 </ul>
Osamu Nakamura 1:c3d69f309845 977 <p><code>videoSource.stop()</code>の同期版です。処理は同期で行われ、処理が完了すると呼び出し元に戻ります。失敗すると例外をスローします。</p>
Osamu Nakamura 1:c3d69f309845 978 <h2 id="videosource-close-callback-">videoSource.close(callback)</h2>
Osamu Nakamura 1:c3d69f309845 979 <ul>
Osamu Nakamura 1:c3d69f309845 980 <li><code>callback</code> {Function} コールバック関数<ul>
Osamu Nakamura 1:c3d69f309845 981 <li><code>err</code> {Error|null} エラーオブジェクト(失敗のとき) または <code>null</code>(成功のとき)。</li>
Osamu Nakamura 1:c3d69f309845 982 </ul>
Osamu Nakamura 1:c3d69f309845 983 </li>
Osamu Nakamura 1:c3d69f309845 984 <li>戻り値: {undefined}</li>
Osamu Nakamura 1:c3d69f309845 985 </ul>
Osamu Nakamura 1:c3d69f309845 986 <p>カメラの制御/信号取り込みに関するハードウェアリソースを解放します。<code>videoSource.start()</code>によりカメラの撮影/信号の取り込みが開始されている場合、この関数の内部で自動的に<code>videoSource.stop()</code>が呼び出されて停止されます。処理は非同期で行われ、処理が完了または失敗すると、コールバック関数が呼び出されます。</p>
Osamu Nakamura 1:c3d69f309845 987 <blockquote>
Osamu Nakamura 1:c3d69f309845 988 <p><strong>注意</strong>: この関数を呼んだ後には、この<code>VideoSource</code>インスタンスに対していかなる操作も行えません。このとき各プロパティの返す値は未定義であり、各関数の呼び出しを行うとエラーが発生します。</p>
Osamu Nakamura 1:c3d69f309845 989 </blockquote>
Osamu Nakamura 1:c3d69f309845 990 <!--
Osamu Nakamura 1:c3d69f309845 991 * C++ライブラリ側API
Osamu Nakamura 1:c3d69f309845 992 * 使用しない
Osamu Nakamura 1:c3d69f309845 993 -->
Osamu Nakamura 1:c3d69f309845 994 <h2 id="videosource-closesync-">videoSource.closeSync()</h2>
Osamu Nakamura 1:c3d69f309845 995 <ul>
Osamu Nakamura 1:c3d69f309845 996 <li>戻り値: {undefined}</li>
Osamu Nakamura 1:c3d69f309845 997 </ul>
Osamu Nakamura 1:c3d69f309845 998 <p><code>videoSource.close()</code>の同期版です。処理は同期で行われ、処理が完了すると呼び出し元に戻ります。失敗すると例外をスローします。</p>
Osamu Nakamura 1:c3d69f309845 999 </body></html>