Sony Felica リーダーライター RC-S602S Arduinoライブラリ修正点について 備忘録

#Felica リーダー・ライター RC-S620S をAruduinoで使う
先日ふと思いついて、アプリケーションというかシステムについて発想を得た。早速ハード関係を購入しいじっている。
デバイス使用でまた躓いて3時間～4時間使ってしまった。
優秀な方ならすぐわかっただろうが、ポンコツな頭では時間がかかった。
ネットからいろいろなリサーチをして何とかしてやろうと思ったが、うまくいかなかったので投稿しておこうと思う。
結論から言うと単純なミスであった。

スイッチサイエンスさんの[FeliCa リーダー・ライター RC-S620S] → 「Arduino向けRC-S620/S制御ライブラリの提供」(FeliCa Developers' Blogの記事）→「Arduino 用 RC-S620/S ライブラリ サンプルコード」　ダウンロードページ Version1.0.0.1 2010.11.26 リリース版 (http://blog.felicalauncher.com/?p=2677)
　に行きライブラリをZipでダウンロードし、Arduino IDEにインストールするまでは何も問題はなかった。
　が、実際Arduino Megaに入れたら、エラーが出まくった。ネットからライブラリの「.cpp」をいじらないとうまく動かないよと多数の記事で書いてあったので修正した。
実際修正の参考にした記事 
https://deviceplus.jp/hobby/entry_f02/
https://ryusakura.wordpress.com/2019/03/27/arduino%E3%81%A7felica%E3%81%AEidm%E3%82%92%E5%8F%96%E5%BE%97/
実際現在は Felica内のIDmは確認できているが、一時はまだ使用して1時間もしていないデバイスを壊したかと思いまた買おうかと思った。
スイッチサイエンスさんには残念だが、問題解決した。

#実際の修正点
このままテキストエディタ（メモ帳やVisualstudio）に貼り付けても使える。
長いので要点のみ下に記します。
<pre>
<font color="#95a5a6">&#47;*</font>
<font color="#95a5a6"> * RC-S620&#47;S sample library for Arduino</font>
<font color="#95a5a6"> *2021年7月30日改変</font>
<font color="#95a5a6"> * Copyright 2010 Sony Corporation</font>
<font color="#95a5a6"> *&#47;</font>

<font color="#5e6d03">#include</font> <font color="#434f54">&lt;</font><font color="#000000">stdio</font><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">&gt;</font>
<font color="#5e6d03">#include</font> <font color="#434f54">&lt;</font><font color="#000000">string</font><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">&gt;</font>
<font color="#5e6d03">#include</font> <font color="#434f54">&lt;</font><font color="#000000">inttypes</font><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">&gt;</font>
<font color="#95a5a6">&#47;*#include &#34;Wprogram.h&#34;*&#47;</font>
<font color="#5e6d03">#include</font> <font color="#005c5f">&#34;Arduino.h&#34;</font>
<font color="#5e6d03">#include</font> <font color="#005c5f">&#34;Print.h&#34;</font>
<font color="#5e6d03">#include</font> <font color="#005c5f">&#34;HardwareSerial.h&#34;</font>

<font color="#5e6d03">#include</font> <font color="#005c5f">&#34;RCS620S.h&#34;</font>

<font color="#95a5a6">&#47;* --------------------------------</font>
<font color="#95a5a6"> * Constant</font>
<font color="#95a5a6"> * -------------------------------- *&#47;</font>

<font color="#5e6d03">#define</font> <font color="#000000">RCS620S_DEFAULT_TIMEOUT</font> &nbsp;<font color="#000000">1000</font>

<font color="#95a5a6">&#47;* --------------------------------</font>
<font color="#95a5a6"> * Variable</font>
<font color="#95a5a6"> * -------------------------------- *&#47;</font>

<font color="#95a5a6">&#47;* --------------------------------</font>
<font color="#95a5a6"> * Prototype Declaration</font>
<font color="#95a5a6"> * -------------------------------- *&#47;</font>

<font color="#95a5a6">&#47;* --------------------------------</font>
<font color="#95a5a6"> * Macro</font>
<font color="#95a5a6"> * -------------------------------- *&#47;</font>

<font color="#95a5a6">&#47;* --------------------------------</font>
<font color="#95a5a6"> * Function</font>
<font color="#95a5a6"> * -------------------------------- *&#47;</font>

<font color="#95a5a6">&#47;* ------------------------</font>
<font color="#95a5a6"> * public</font>
<font color="#95a5a6"> * ------------------------ *&#47;</font>

<font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">RCS620S</font><font color="#000000">(</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">timeout</font> <font color="#434f54">=</font> <font color="#000000">RCS620S_DEFAULT_TIMEOUT</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">initDevice</font><font color="#000000">(</font><font color="#00979c">void</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">int</font> <font color="#000000">ret</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#d35400">response</font><font color="#000000">[</font><font color="#000000">RCS620S_MAX_RW_RESPONSE_LEN</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">responseLen</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* RFConfiguration (various timings) *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">rwCommand</font><font color="#000000">(</font><font color="#000000">(</font><font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font><font color="#000000">)</font><font color="#005c5f">&#34;\xd4\x32\x02\x00\x00\x00&#34;</font><font color="#434f54">,</font> <font color="#000000">6</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">response</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">responseLen</font> <font color="#434f54">!=</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\xd5\x33&#34;</font><font color="#434f54">,</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* RFConfiguration (max retries) *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">rwCommand</font><font color="#000000">(</font><font color="#000000">(</font><font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font><font color="#000000">)</font><font color="#005c5f">&#34;\xd4\x32\x05\x00\x00\x00&#34;</font><font color="#434f54">,</font> <font color="#000000">6</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">response</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">responseLen</font> <font color="#434f54">!=</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\xd5\x33&#34;</font><font color="#434f54">,</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* RFConfiguration (additional wait time = 24ms) *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">rwCommand</font><font color="#000000">(</font><font color="#000000">(</font><font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font><font color="#000000">)</font><font color="#005c5f">&#34;\xd4\x32\x81\xb7&#34;</font><font color="#434f54">,</font> <font color="#000000">4</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">response</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">responseLen</font> <font color="#434f54">!=</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\xd5\x33&#34;</font><font color="#434f54">,</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">polling</font><font color="#000000">(</font><font color="#00979c">uint16_t</font> <font color="#000000">systemCode</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">int</font> <font color="#000000">ret</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">9</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#d35400">response</font><font color="#000000">[</font><font color="#000000">RCS620S_MAX_RW_RESPONSE_LEN</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">responseLen</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* InListPassiveTarget *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\xd4\x4a\x01\x01\x00\xff\xff\x00\x00&#34;</font><font color="#434f54">,</font> <font color="#000000">9</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">5</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">systemCode</font> <font color="#434f54">&gt;&gt;</font> <font color="#000000">8</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">6</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">systemCode</font> <font color="#434f54">&gt;&gt;</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">rwCommand</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">9</font><font color="#434f54">,</font> <font color="#d35400">response</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">responseLen</font> <font color="#434f54">!=</font> <font color="#000000">22</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\xd5\x4b\x01\x01\x12\x01&#34;</font><font color="#434f54">,</font> <font color="#000000">6</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">idm</font><font color="#434f54">,</font> <font color="#d35400">response</font> <font color="#434f54">+</font> <font color="#000000">6</font><font color="#434f54">,</font> <font color="#000000">8</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">pmm</font><font color="#434f54">,</font> <font color="#d35400">response</font> <font color="#434f54">+</font> <font color="#000000">14</font><font color="#434f54">,</font> <font color="#000000">8</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">cardCommand</font><font color="#000000">(</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font> <font color="#000000">command</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">commandLen</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#d35400">response</font><font color="#000000">[</font><font color="#000000">RCS620S_MAX_CARD_RESPONSE_LEN</font><font color="#000000">]</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font><font color="#434f54">*</font> <font color="#000000">responseLen</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">int</font> <font color="#000000">ret</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">commandTimeout</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">RCS620S_MAX_RW_RESPONSE_LEN</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">len</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">timeout</font> <font color="#434f54">&gt;=</font> <font color="#000000">(</font><font color="#000000">0x10000</font> <font color="#434f54">&#47;</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">commandTimeout</font> <font color="#434f54">=</font> <font color="#000000">0xffff</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">commandTimeout</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint16_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">timeout</font> <font color="#434f54">*</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* CommunicateThruEX *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0xd4</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">1</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0xa0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">2</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">commandTimeout</font> <font color="#434f54">&gt;&gt;</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">commandTimeout</font> <font color="#434f54">&gt;&gt;</font> <font color="#000000">8</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">4</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">commandLen</font> <font color="#434f54">+</font> <font color="#000000">1</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">5</font><font color="#434f54">,</font> <font color="#000000">command</font><font color="#434f54">,</font> <font color="#000000">commandLen</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">rwCommand</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">5</font> <font color="#434f54">+</font> <font color="#000000">commandLen</font><font color="#434f54">,</font> <font color="#000000">buf</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">len</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">len</font> <font color="#434f54">&lt;</font> <font color="#000000">4</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">0xd5</font><font color="#000000">)</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">1</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">0xa1</font><font color="#000000">)</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">2</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">0x00</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#000000">len</font> <font color="#434f54">!=</font> <font color="#000000">(</font><font color="#000000">3</font> <font color="#434f54">+</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font><font color="#000000">)</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#434f54">*</font><font color="#000000">responseLen</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font> <font color="#434f54">-</font> <font color="#000000">1</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">4</font><font color="#434f54">,</font> <font color="#434f54">*</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">rfOff</font><font color="#000000">(</font><font color="#00979c">void</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">int</font> <font color="#000000">ret</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#d35400">response</font><font color="#000000">[</font><font color="#000000">RCS620S_MAX_RW_RESPONSE_LEN</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">responseLen</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* RFConfiguration (RF field) *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">rwCommand</font><font color="#000000">(</font><font color="#000000">(</font><font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font><font color="#000000">)</font><font color="#005c5f">&#34;\xd4\x32\x01\x00&#34;</font><font color="#434f54">,</font> <font color="#000000">4</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">response</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">responseLen</font> <font color="#434f54">!=</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\xd5\x33&#34;</font><font color="#434f54">,</font> <font color="#000000">2</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">push</font><font color="#000000">(</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font> <font color="#d35400">data</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">dataLen</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">int</font> <font color="#000000">ret</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">RCS620S_MAX_CARD_RESPONSE_LEN</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">responseLen</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">dataLen</font> <font color="#434f54">&gt;</font> <font color="#000000">224</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* Push *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0xb0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">1</font><font color="#434f54">,</font> <font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">idm</font><font color="#434f54">,</font> <font color="#000000">8</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">9</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">dataLen</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">10</font><font color="#434f54">,</font> <font color="#d35400">data</font><font color="#434f54">,</font> <font color="#000000">dataLen</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">cardCommand</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">10</font> <font color="#434f54">+</font> <font color="#000000">dataLen</font><font color="#434f54">,</font> <font color="#000000">buf</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">responseLen</font> <font color="#434f54">!=</font> <font color="#000000">10</font><font color="#000000">)</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">0xb1</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">1</font><font color="#434f54">,</font> <font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">idm</font><font color="#434f54">,</font> <font color="#000000">8</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">9</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">dataLen</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0xa4</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">memcpy</font><font color="#000000">(</font><font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">1</font><font color="#434f54">,</font> <font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">idm</font><font color="#434f54">,</font> <font color="#000000">8</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">9</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0x00</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">cardCommand</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">10</font><font color="#434f54">,</font> <font color="#000000">buf</font><font color="#434f54">,</font> <font color="#434f54">&amp;</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">responseLen</font> <font color="#434f54">!=</font> <font color="#000000">10</font><font color="#000000">)</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">0xa5</font><font color="#000000">)</font> <font color="#434f54">||</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">1</font><font color="#434f54">,</font> <font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">idm</font><font color="#434f54">,</font> <font color="#000000">8</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">9</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">0x00</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">1000</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#95a5a6">&#47;* ------------------------</font>
<font color="#95a5a6"> * private</font>
<font color="#95a5a6"> * ------------------------ *&#47;</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">rwCommand</font><font color="#000000">(</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font> <font color="#000000">command</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">commandLen</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#d35400">response</font><font color="#000000">[</font><font color="#000000">RCS620S_MAX_RW_RESPONSE_LEN</font><font color="#000000">]</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font><font color="#434f54">*</font> <font color="#000000">responseLen</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">int</font> <font color="#000000">ret</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">9</font><font color="#000000">]</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">flushSerial</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">dcs</font> <font color="#434f54">=</font> <font color="#000000">calcDCS</font><font color="#000000">(</font><font color="#000000">command</font><font color="#434f54">,</font> <font color="#000000">commandLen</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* transmit the command *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0x00</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">1</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0x00</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">2</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0xff</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">commandLen</font> <font color="#434f54">&lt;=</font> <font color="#000000">255</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* normal frame *&#47;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">commandLen</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">4</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#434f54">-</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">writeSerial</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">5</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* extended frame *&#47;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0xff</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">4</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0xff</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">5</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">commandLen</font> <font color="#434f54">&gt;&gt;</font> <font color="#000000">8</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">6</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">commandLen</font> <font color="#434f54">&gt;&gt;</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">7</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#434f54">-</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">5</font><font color="#000000">]</font> <font color="#434f54">+</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">6</font><font color="#000000">]</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">writeSerial</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">8</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">writeSerial</font><font color="#000000">(</font><font color="#000000">command</font><font color="#434f54">,</font> <font color="#000000">commandLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">dcs</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">1</font><font color="#000000">]</font> <font color="#434f54">=</font> <font color="#000000">0x00</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">writeSerial</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* receive an ACK *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">readSerial</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">6</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\x00\x00\xff\x00\xff\x00&#34;</font><font color="#434f54">,</font> <font color="#000000">6</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">cancel</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* receive a response *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">readSerial</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">5</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">cancel</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#5e6d03">if</font> &nbsp;<font color="#000000">(</font><font color="#d35400">memcmp</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#005c5f">&#34;\x00\x00\xff&#34;</font><font color="#434f54">,</font> <font color="#000000">3</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font> <font color="#434f54">==</font> <font color="#000000">0xff</font><font color="#000000">)</font> <font color="#434f54">&amp;&amp;</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">4</font><font color="#000000">]</font> <font color="#434f54">==</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">readSerial</font><font color="#000000">(</font><font color="#000000">buf</font> <font color="#434f54">+</font> <font color="#000000">5</font><font color="#434f54">,</font> <font color="#000000">3</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">5</font><font color="#000000">]</font> <font color="#434f54">+</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">6</font><font color="#000000">]</font> <font color="#434f54">+</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">7</font><font color="#000000">]</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">*</font><font color="#000000">responseLen</font> <font color="#434f54">=</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#00979c">uint16_t</font><font color="#000000">)</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">5</font><font color="#000000">]</font> <font color="#434f54">&lt;&lt;</font> <font color="#000000">8</font><font color="#000000">)</font> <font color="#434f54">|</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">(</font><font color="#000000">(</font><font color="#00979c">uint16_t</font><font color="#000000">)</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">6</font><font color="#000000">]</font> <font color="#434f54">&lt;&lt;</font> <font color="#000000">0</font><font color="#000000">)</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font> <font color="#434f54">+</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">4</font><font color="#000000">]</font><font color="#000000">)</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font> <font color="#434f54">!=</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#434f54">*</font><font color="#000000">responseLen</font> <font color="#434f54">=</font> <font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">3</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">*</font><font color="#000000">responseLen</font> <font color="#434f54">&gt;</font> <font color="#000000">RCS620S_MAX_RW_RESPONSE_LEN</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">readSerial</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#434f54">*</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">cancel</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">dcs</font> <font color="#434f54">=</font> <font color="#000000">calcDCS</font><font color="#000000">(</font><font color="#d35400">response</font><font color="#434f54">,</font> <font color="#434f54">*</font><font color="#000000">responseLen</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#000000">ret</font> <font color="#434f54">=</font> <font color="#000000">readSerial</font><font color="#000000">(</font><font color="#000000">buf</font><font color="#434f54">,</font> <font color="#000000">2</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#434f54">!</font><font color="#000000">ret</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">0</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">dcs</font><font color="#000000">)</font> <font color="#434f54">||</font> <font color="#000000">(</font><font color="#000000">buf</font><font color="#000000">[</font><font color="#000000">1</font><font color="#000000">]</font> <font color="#434f54">!=</font> <font color="#000000">0x00</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">cancel</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">void</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">cancel</font><font color="#000000">(</font><font color="#00979c">void</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;* transmit an ACK *&#47;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">writeSerial</font><font color="#000000">(</font><font color="#000000">(</font><font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font><font color="#000000">)</font><font color="#005c5f">&#34;\x00\x00\xff\x00\xff\x00&#34;</font><font color="#434f54">,</font> <font color="#000000">6</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">1</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">flushSerial</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">uint8_t</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">calcDCS</font><font color="#000000">(</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font> <font color="#d35400">data</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">len</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font> <font color="#000000">sum</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">for</font> <font color="#000000">(</font><font color="#00979c">uint16_t</font> <font color="#000000">i</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font> <font color="#000000">i</font> <font color="#434f54">&lt;</font> <font color="#000000">len</font><font color="#000000">;</font> <font color="#000000">i</font><font color="#434f54">++</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">sum</font> <font color="#434f54">+=</font> <font color="#d35400">data</font><font color="#000000">[</font><font color="#000000">i</font><font color="#000000">]</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">(</font><font color="#00979c">uint8_t</font><font color="#000000">)</font><font color="#434f54">-</font><font color="#000000">(</font><font color="#000000">sum</font> <font color="#434f54">&amp;</font> <font color="#000000">0xff</font><font color="#000000">)</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">void</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">writeSerial</font><font color="#000000">(</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">const</font> <font color="#00979c">uint8_t</font><font color="#434f54">*</font> <font color="#d35400">data</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">len</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;*Serial.write(data, len)*&#47;</font>
 &nbsp;<b><font color="#d35400">Serial1</font></b><font color="#434f54">.</font><font color="#d35400">write</font><font color="#000000">(</font><font color="#d35400">data</font><font color="#434f54">,</font> <font color="#000000">len</font><font color="#000000">)</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">readSerial</font><font color="#000000">(</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint8_t</font><font color="#434f54">*</font> <font color="#d35400">data</font><font color="#434f54">,</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">len</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">uint16_t</font> <font color="#000000">nread</font> <font color="#434f54">=</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">unsigned</font> <font color="#00979c">long</font> <font color="#000000">t0</font> <font color="#434f54">=</font> <font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">while</font> <font color="#000000">(</font><font color="#000000">nread</font> <font color="#434f54">&lt;</font> <font color="#000000">len</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">checkTimeout</font><font color="#000000">(</font><font color="#000000">t0</font><font color="#000000">)</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;<font color="#95a5a6">&#47;*if (Serial.available() &gt; 0) {</font>
<font color="#95a5a6"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[nread] = Serial.read();</font>
<font color="#95a5a6"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nread++; *&#47;</font>
 &nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><b><font color="#d35400">Serial1</font></b><font color="#434f54">.</font><font color="#d35400">available</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#434f54">&gt;</font> <font color="#000000">0</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#d35400">data</font><font color="#000000">[</font><font color="#000000">nread</font><font color="#000000">]</font> <font color="#434f54">=</font> <b><font color="#d35400">Serial1</font></b><font color="#434f54">.</font><font color="#d35400">read</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">nread</font><font color="#434f54">++</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">}</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">void</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">flushSerial</font><font color="#000000">(</font><font color="#00979c">void</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#95a5a6">&#47;*Serial.flush(); *&#47;</font>
 &nbsp;&nbsp;&nbsp;<b><font color="#d35400">Serial1</font></b><font color="#434f54">.</font><font color="#d35400">flush</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>
<font color="#000000">}</font>

<font color="#00979c">int</font> <font color="#000000">RCS620S</font><font color="#434f54">:</font><font color="#434f54">:</font><font color="#000000">checkTimeout</font><font color="#000000">(</font><font color="#00979c">unsigned</font> <font color="#00979c">long</font> <font color="#000000">t0</font><font color="#000000">)</font>
<font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;<font color="#00979c">unsigned</font> <font color="#00979c">long</font> <font color="#000000">t</font> <font color="#434f54">=</font> <font color="#d35400">millis</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">(</font><font color="#000000">t</font> <font color="#434f54">-</font> <font color="#000000">t0</font><font color="#000000">)</font> <font color="#434f54">&gt;=</font> <font color="#5e6d03">this</font><font color="#434f54">-</font><font color="#434f54">&gt;</font><font color="#000000">timeout</font><font color="#000000">)</font> <font color="#000000">{</font>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">1</font><font color="#000000">;</font>
 &nbsp;&nbsp;&nbsp;<font color="#000000">}</font>

 &nbsp;&nbsp;&nbsp;<font color="#5e6d03">return</font> <font color="#000000">0</font><font color="#000000">;</font>
<font color="#000000">}</font>
</pre>
改変した部分は下記のとおり。
Arduino Mega で使用するため「Serial」を「Serial1」とする部分がある。
文中では/**/でコメントにしているのでずれるかも。
10行目あたり　#includ "Wprogram.h" を　#include "Arduino.h"に変更する。
314行目あたり　Serial1.write(data, len);
332行目　　　　if (Serial1.available() > 0) {
           　　　　　　　　　　　　　　 data[nread] = Serial1.read();
    　　　　　　　　　　　　　　       nread++;
344行目　　　　Serial1.flush();

上記のことは他の方がさんざん記述されていることですのでネット検索で十分対応可能かと思われます。