Arduino 関数定義が動かない時のエラーメモ

Arduinoで関数を定義する場合は、以下のようにsetupとloop以外のところで定義する。

———————————
void setup() {
  // 処理書く
}

void loop() {
  // 処理書く
}

[戻り値の型] 関数名() {
  // 処理書く
}
———————————

「error: return-statement with a value, in function returning ‘void’ [-fpermissive]」というエラーは、戻り値の指定がおかしい場合などに出力される。
自作関数はvoidか型を「戻り値の型」に定義する。

1.void 関数名() ← voidは戻り値を必要としない場合。

(例)

  void loop() {
     display();
  }

  void display() {
     int r = r + 10;
     Serial.printf(r);
  }

2.[戻り値の型] 関数名() ← 戻り値を必要する場合。

(例)

  void loop() {
     String txt = display();
     Serial.print(txt);
  }

  String display() {
     String r = “abc”;
     return r; // 戻り値が必要な場合は定義する。returnがないと値が戻ってこない。
  }

■参考サイト
Arduinoチュートリアル 基礎編

異なるDB間をモデル内でリレーション定義→利用不可

■環境 
 CakePHP 1.3.x 

■やりたいこと
 モデル内で異なるDB間(複数のDB)をリレーションし、
 それぞれのDBのカラムを出力する関数を定義する。
 
■結論
 普通の仕組みではムリ。ハックすればできる(らしい)。
 
■現状の整理
 異なるDB間のリレーション自体ができないわけではない。
 
 異なるDB間のモデルの紐付け(hasManyとか) → ○
 異なるDB間のモデル紐付け後にmodelsに関数作成 → ×(unknown columnと言われる)
 異なるDB間のモデル紐付け後にcontrollersに関数作成 → ○(model以外なら実行可)

■自分が取った対策
 modelsで関数定義はあきらめて、component化した。
 (ファットモデルはあらきめた) 

 【app/config/database.phpの設定】 
  こんな感じで設定 → CakePHP で複数のデータベースを使用する - mallowlabsの備忘録
 
 【app/models/読み込むモデルの設定】
  同上
 
 【app/controllers/components/読み込むコンポーネントの設定】
  ここを参考に異なるDBのカラムを出力する関数を作成
  第12回 コンポーネントの作り方:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社 
  
 
 【app/controllers/コントローラの設定】 

  冒頭でこんな感じで呼び出し

  var $useDbConfig = 'userdb';
  var $uses = array('DB1のモデル', 'DB2のモデル';
  var $components = array('DB1とDB2両方を参照する関数を書いたコンポーネント');
 
  そのあと、コンポーネントを呼び出す。
 
■参考資料
 本件についての議論など(ハックすればできるよ的な内容含む)。
 ※日本語での内容は見当たらず
 CakePHP - querying across models with multiple databases and useDbConfig
 cakephp - Association and model data saving problem - Stack Overflow
 Multiple Databases Model Relationship - CakePHP | Google Groups 
 
■補足
 自分がCakePHPの仕組みをあまり分かっていない可能性もあり、
 そもそも、そういう動きをさせない(こういう疑問が出ないのが普通?)のが
 普通かもしれません。