BREW(Binary Runtime Environment for Wireless) 9
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/12/21(木) 13:37:32■テンプレ
http://brew.s214.xrea.com/pukiwiki/
http://kintubo.kakiko.com/brew/
■前スレ
08 http://pc8.2ch.net/test/read.cgi/tech/1147832791/
■過去スレ
07 http://pc8.2ch.net/test/read.cgi/tech/1137502541/
06 http://pc8.2ch.net/test/read.cgi/tech/1126846736/
05 http://pc8.2ch.net/test/read.cgi/tech/1119056460/
04 http://pc8.2ch.net/test/read.cgi/tech/1111028365/
03 http://pc5.2ch.net/test/read.cgi/tech/1096006023/
02 http://pc5.2ch.net/test/read.cgi/tech/1076511398/
01 http://pc2.2ch.net/test/read.cgi/tech/1011078904/
関連情報 >>2-10
0357デフォルトの名無しさん
2007/04/02(月) 08:23:130358345
2007/04/02(月) 11:13:27ありがとです。
おかげでエラーコードを拾えるようになりました。
サーバ側と詰めてきます。
強引なキャストだと思っていたら
見ている資料が古すぎたってことか(;´ρ`)
BREWでC++って使っていますか?
Better Cという意味でのC++ではなく、クラスなどのオブジェクト指向としてのC++って意味です。
組み込みやった先輩(BREWは初心者)から、
組み込みは基本的にC。BREWやってた人からBREWでC++やるとはまる、チャレンジャーだねという話を聞いた。
と言われました。
BREWでC++使えますでしょうか?
0360デフォルトの名無しさん
2007/04/03(火) 09:49:01使っていますが全く問題ありません。
0361デフォルトの名無しさん
2007/04/03(火) 10:02:52テンプレートが実質使えないから旨味が半減じゃまいか。
0362345
2007/04/03(火) 15:12:27SSLが遅い!との事でhttpに変更になりました。
ソース全部破棄しました。
本当にありがとうございました。
0363デフォルトの名無しさん
2007/04/03(火) 15:33:39うちも基本的に C++ で書いてる。
>>361
テンプレートは使えるには使えるんだが、容量の都合で用途は限定されるべ。
C++で問題ないみたいなので、C++で行こうと思います。
0365デフォルトの名無しさん
2007/04/04(水) 02:50:59RVDS2.1以降でC++のサポートが強化されてる
namespaceとかtemplate回り
金があるならRVDS買えば幸せになれるかも
>>362
UIMカード搭載端末限定だとたぶん回避策あるんだが...それで問題なければ問い合わせて見れ
RVDSで幸せになれるというのをもう少し教えてください。
VCだとVCのコンパイラーで通れば何でも書けちゃうけど、
RVDSだとIDEがBREW(ARM)用のC/C++に対応してるとかですか?
BREWのSDKに付いてるエミュレーターは、なんちゃってエミュなので、
Windows上でBREW用のソースでテストとかできるなら嬉しいですけど。
今でも$6000ぐらいからですか?
http://www.jp.arm.com/kk/summary/price.html
0368デフォルトの名無しさん
2007/04/04(水) 10:11:55BREWに関してはデバッグ環境はかわらんよ
値段はシラネ
0369デフォルトの名無しさん
2007/04/04(水) 13:09:340370デフォルトの名無しさん
2007/04/05(木) 00:41:480371デフォルトの名無しさん
2007/04/05(木) 11:33:28これのことか?
ttp://www1.interq.or.jp/t-takeda/rx78/index.html
0372デフォルトの名無しさん
2007/04/05(木) 21:52:140373デフォルトの名無しさん
2007/04/05(木) 21:58:130374デフォルトの名無しさん
2007/04/11(水) 10:39:530375デフォルトの名無しさん
2007/04/13(金) 09:43:26通信や処理終了後に連打した分のキーイベントが、
全て起こってしまうんですが、
これを上手く回避する方法はないでしょうか?
0376デフォルトの名無しさん
2007/04/13(金) 10:08:130377デフォルトの名無しさん
2007/04/13(金) 13:36:30IMEDIA_Playを並べて書いてみたらズレまくって困る
0378デフォルトの名無しさん
2007/04/13(金) 13:45:32データがおかしいのかも。
0379デフォルトの名無しさん
2007/04/13(金) 14:09:01全部の音は、鳴ることは鳴ってるんだけど。
ただ、並べて再生してみたら数ミリ秒とかそんなぐらいなんだけどスタートがズレてて、
後ろに書いた方がタイミングがズレてるような感じを受けるんだ。
0380デフォルトの名無しさん
2007/04/13(金) 14:28:160381デフォルトの名無しさん
2007/04/13(金) 15:24:41の *pdwTotal って何?
0382デフォルトの名無しさん
2007/04/13(金) 15:56:59BREWAPIReference.chm
0383381
2007/04/13(金) 16:43:56すんません。
「ファイルシステムで現在使用可能な空きバイト数」(戻り値)とはちがう、
「ファイルシステム内の合計空き容量」(*pdwTotal)って何だ?と思って。
k-brew-testでほぼ目一杯にしてて、*pdwTotalがEFS全体に近いような値だったので、
これ何だろと。
他のアプリも含め、アプリが作成したファイルを全部削除した場合の空き容量とか?
>>381
最初からそう書いとけ
0384デフォルトの名無しさん
2007/04/13(金) 17:43:500385381
2007/04/13(金) 18:26:370386デフォルトの名無しさん
2007/04/13(金) 22:06:49>「ファイルシステムで現在使用可能な空きバイト数」(戻り値)
EFSのうちの空き容量。
>「ファイルシステム内の合計空き容量」(*pdwTotal)って何だ?
EFS全体のサイズ。だからTotal。
システムが占有する分がいくらかあるだろうから仕様書の値とは若干違う。
だから「EFS全体に近いような値」(であって大きく外れた値ではない)。
0387デフォルトの名無しさん
2007/04/17(火) 10:28:43IDATAFOLDER_SelectUI なんですが、
第4引数の dwMaxFileSize の説明に
『選択するファイルサイズ合計値の上限。(単位はKB)』
とあるので100と指定してみたのですが、
余裕で100KB超のファイルを選択できます。
仕様と思っていいんでしょうか?
テストに使用している機種はW42SAで、
端末仕様書を見る限り特に制限とか書いてないようなんですが。
0388デフォルトの名無しさん
2007/04/17(火) 16:49:48(略)
>この機能は移動機依存であり、実装されない移動機もあります。
こういうことじゃない?
0389デフォルトの名無しさん
2007/04/17(火) 22:00:22世に出回っているアプリ起動中に、電源ボタンを押すと、
xxxを終了します。よろしいですか?
1中断する
2終了する
3キャンセルする
と端末共通ぽいダイアログがでますが、これの呼び出し方法が判りません。
何かの設定をすると自動で出るのか・・・KDDIのライブラリを呼ぶのか・・・色々調べたけどダメでした。
判る方居たらよろしくお願いします。
0390デフォルトの名無しさん
2007/04/17(火) 22:13:50サービスガイドを「ダイアログ」で検索。
0391デフォルトの名無しさん
2007/04/17(火) 23:04:23サービスガイドはひととおり読んだほうがいいんじゃないでしょうか・・・
あと、事前検証手順書とチェックシートは今のうちに一回眺めておくと
後で幸せかもしれません。
0392デフォルトの名無しさん
2007/04/17(火) 23:04:24その周りって、2.1と3.1でスペックが微妙に違うよな。2.1だと何も考えなくても
よかったんだが
0393389
2007/04/17(火) 23:44:100394387
2007/04/18(水) 10:16:14どうやらそのようで。
今日別の端末が届いたので同じアプリを入れてみたら、
「あと100KB」と表示が出ましたとさ。
その文言はどう見ても「複数選択」の方に
かかりそうな気がするんだが・・・
何だかなぁ(゜д゜)
0395デフォルトの名無しさん
2007/04/22(日) 00:55:320396デフォルトの名無しさん
2007/04/22(日) 02:00:22試験モードになってりゃシリアルケーブルで送れるよ。
sigファイルを定期的に取り直せば勝手アプリだって
自由に動かせるよ。便利だよ。
0397デフォルトの名無しさん
2007/04/22(日) 02:14:57メンテのせいで仕事がーーー
0398デフォルトの名無しさん
2007/04/22(日) 02:38:080399デフォルトの名無しさん
2007/04/22(日) 03:29:230400デフォルトの名無しさん
2007/04/22(日) 18:39:150401デフォルトの名無しさん
2007/04/22(日) 19:03:23あーん?聞こえんなぁ
徹夜してでも間に合わせろ
なんとか終わらせました
あーん?何徹夜残業してんだよ
メンテでできなかったからです
あーん?そんなもん知ったことか
ちゃんと計画立ててないのが悪い
残業代でないからな
0402デフォルトの名無しさん
2007/04/22(日) 22:15:170403デフォルトの名無しさん
2007/04/22(日) 22:41:040404デフォルトの名無しさん
2007/04/24(火) 15:08:09もしかしてsigファイルとれなくて実機での検証がまだとかなのだろうか・・・
0405デフォルトの名無しさん
2007/04/24(火) 17:34:24まだ3営業日しか立っていないんで、何とも言えない希ガス。
0406デフォルトの名無しさん
2007/04/25(水) 01:22:2218時位からアクセスが来た。しかもこの時間になっても検証作業してる。
がんばれ検証ラインの中の人。
0407デフォルトの名無しさん
2007/04/25(水) 01:53:37無効も迷惑こうむってたんだな・・・
0408デフォルトの名無しさん
2007/04/25(水) 13:17:020409デフォルトの名無しさん
2007/04/26(木) 07:47:57連中にはいろんな意味で頭があがらないぜ。
0410デフォルトの名無しさん
2007/04/27(金) 00:49:420411デフォルトの名無しさん
2007/04/27(金) 01:05:360412デフォルトの名無しさん
2007/04/27(金) 02:24:510413デフォルトの名無しさん
2007/04/27(金) 09:56:08ソースはC++で、静的変数をいっぱい使っていたりするんですけれど。
それから、こちらはRVDS2.xが前提みたいですが、lightblueの
modジェネレータって、誰か使って成功しています?
0414デフォルトの名無しさん
2007/04/27(金) 13:17:34・・・って有効期限が1年になってるけど、あってるの?これ・・・
0415デフォルトの名無しさん
2007/05/01(火) 01:52:480416デフォルトの名無しさん
2007/05/01(火) 09:15:070417デフォルトの名無しさん
2007/05/01(火) 21:11:37いいなぁ、お前、どうせ去年からずっと連休なんだろ?
0418デフォルトの名無しさん
2007/05/02(水) 00:35:200419デフォルトの名無しさん
2007/05/07(月) 14:34:570420デフォルトの名無しさん
2007/05/07(月) 15:21:34こ れ か ら 2 ヶ 月 祝 日 な し
0421デフォルトの名無しさん
2007/05/07(月) 15:45:37何言ってんだ?(・ω・)
0422デフォルトの名無しさん
2007/05/07(月) 20:00:220423デフォルトの名無しさん
2007/05/07(月) 22:28:330424デフォルトの名無しさん
2007/05/07(月) 22:37:54クロスキャストで質問なんだが。。。
Javaからの移植を今やってる。で以下の継承ツリーを持つクラスがある。
Object -> ClassA -> ClassB -> ClassC -> ClassD
↑ ↑
Object -> ClassE ↑
↑
Object -> ClassF -> ClassG
※)みぎにいくほどサブクラス。ClassE,ClassF,ClassGはJavaではインターフェース。
BREWでは純粋仮想関数だけを持つクラス
ちなみにClassBの宣言は
class ClassB : public ClassA, public virtual ClassE
ClassCの宣言も同様に
class ClassC : public ClassB, public virtual ClassG
でこのクラスに対して
ClassD* classD = new ClassD();
ClassC* classC = (ClassC*)classD;
ClassB* classB = (ClassB*)classC;
Object* obj = (Object*)classB;
とUPキャストしてObject型にする。んでそのあとに
ClassG* classG = (ClassG*)obj;
classG->hoge();
をやるとまったく違う関数が呼ばれてしまう。。。。どうしたらいいんだろ。。。。
0425デフォルトの名無しさん
2007/05/08(火) 02:07:48ClassG* classG = static_cast<ClassG*>(static_cast<ClassD*>(obj));
obj->hoge();
でいけることない?
0426デフォルトの名無しさん
2007/05/08(火) 02:57:58むかついたからこんな風にしてみた。
IClassG* classG = (IClassG*)(ClassD*)(ClassC*)(ClassB*)(ClassA*)obj;
classG->ClassGFunc();
今は反省していない。
>>424
Object にキャストしたときにはもう元の型情報が失われてるから、
ClassG* にするために何バイトオフセットをずらせばいいかが分からない。
だから正しい型(ClassG を継承した型)に戻した上で ClassG* にキャストしてやる必要がある。
0427デフォルトの名無しさん
2007/05/08(火) 04:12:34それでいけるのも分かるのだが、
しかしそうすると、たとえばIClassGを実装したクラスが
3つあるとすると、それらをIClassG型で扱いたいのに、いちいち元の型を
しらべて、それに一度キャストしてからIClassGに戻すということをしないといけない。
JavaではIClassG型として受け取れば元の型が何であろうと
IClassG型のメソッドは呼べる。
できればJavaと同じ振る舞いをさせたいんだけどいい方法ないかなぁ・・・・
COMのQueryInterfaceみたいなのを作るしかないのかな・・・・・
0428427
2007/05/08(火) 04:16:36いったんObject型にしちゃうのは、JavaでいうVectorみたいな
可変長配列に入れてるためです。
templateにしてないのはプリミティブ型を入れたくないから。
まぁ元がJavaからの移植なのでできるだけJavaのコーディングを
真似したいということです。
0429デフォルトの名無しさん
2007/05/08(火) 08:55:57少々めんどくていいなら、
struct Object
{
int type;
void* obj;
};
こんな感じのクラスを可変長配列に格納すればいいんじゃないかと。
受け取った側は type を見て適切な型に頑張って自分でキャストする、と。
>>427
それをするためには RTTI が不可欠になってくるので、
自分でそういった機構を作る必要が出てくるだろうなぁ。
正直俺はやる気がしない。
0430デフォルトの名無しさん
2007/05/08(火) 18:29:48#include file "なんたら" wouldn't open
がズラーっと並ぶ。
なんたらのところは追加インクルードディレクトリの中にあるヘッダーファイル
どのへんをいじってみたらいいのかもわからんボスケテ
0431デフォルトの名無しさん
2007/05/08(火) 20:39:47-Iオプションで追加インクルードディレクトリを指定してあげたらいいんじゃないかな。
0432デフォルトの名無しさん
2007/05/10(木) 09:56:59助かった。解決!
0433デフォルトの名無しさん
2007/05/10(木) 21:53:07W32SA端末です
0434デフォルトの名無しさん
2007/05/11(金) 00:10:01そうですか。
0435433
2007/05/11(金) 01:29:06支援サイトの資料はあるのですが、「W32」「メール」で検索したのですがダメでした。
アドバイスお願いします
0436デフォルトの名無しさん
2007/05/11(金) 02:58:29その件は技術サポートに質問するような内容だね。
0437デフォルトの名無しさん
2007/05/11(金) 04:17:22BREWアプリが停止するって意味か。
サポートに聞けとしか(ry
0438433
2007/05/11(金) 09:10:370439デフォルトの名無しさん
2007/05/13(日) 10:28:50class Object と class Hoge : public Object があり、
Hoge を社内ライブラリのスマートポインタに格納しました。
SmartPtr<Hoge> spHoge(new Hoge());
そしてスマートポインタから生のポインタを取り出すのですが、
Hoge* pHoge = spHoge.getPtr();
Object* pObject = spHoge.getPtr();
void* pUnknown = spHoge.getPtr();
この時、pObjectにだけ 他で得られたポインタ値-8 が格納されていました。
SmartPtr<Hoge>::getPtr()の実装は、内部で持っているダブルポインタ
Hoge** p を、 return *p として返しているというようなものです。
この、返すべきポインタの型によって、
ポインタ値-8されてしまうのは、何故なのでしょうか?
VCとエミュレータでやってみても再現しないため、
ARMコンパイラの何らかの機構によるものではないかと思うのですが、
私には、それが何であるのか今のところ分かっていません。
他にも同じ経験をされた方や、詳しい方いらっしゃいましたら是非ご教授くださいませ。
0440デフォルトの名無しさん
2007/05/13(日) 16:56:39pHoge を Object* にキャストした場合はどうなる?
>class Hoge : public Object
単一継承じゃなくて多重継承してたりとかしない?
>この時、pObjectにだけ 他で得られたポインタ値-8 が格納されていました。
+8 じゃなくて、-8?
0441439
2007/05/13(日) 21:12:40返信ありがとうございます。
>pHoge を Object* にキャストした場合はどうなる?
pHoge を Object* へというのはちょっとやっていませんでした。
明日試してみます。
>単一継承じゃなくて多重継承してたりとかしない?
・・実は多重継承しています!
本当はこのような継承構造になっています。
class Hoge : public Object , public Factory<Hoge>
Factoryは、static T CreateInstance()メソッドを持ち、自分自身を
確保してあるメモリプールから生成出来るようにしており、
new Hoge() も実際は、Hoge::CreateInstance() となっています。
Objectは、いくつかの変数と仮想関数を持っています。
情報の後出しをしてしまい、申し訳ありません。
多重継承だとVTBLが複雑になるといった情報を先ほど知ったのですが、
その影響ということなのでしょうか?
>+8 じゃなくて、-8?
そこを突っ込まれると、メモって来たわけではないので
ちょっと自身がないのですが、確かpObjectだけ他-8だったように思います。
明日詳しく調べてきます。
0442デフォルトの名無しさん
2007/05/14(月) 00:45:51「BREW Java 風 クラス」とかでググるといいかも。
0443デフォルトの名無しさん
2007/05/14(月) 02:52:27>多重継承だとVTBLが複雑になるといった情報を先ほど知ったのですが、
>その影響ということなのでしょうか?
vtbl よりもメモリレイアウトの方かな。
派生クラスのオブジェクトの一部に基本クラスのオブジェクトが含まれる。
仮に、Hoge クラスのレイアウトが次のようになったとする。
Factory<Hoge> の内容
Object の内容
Hoge 独自の内容
このとき、Hoge * はオブジェクトの先頭を指すので「Factory<Hoge> の内容」の先頭を指している。
void * へキャストする際は、そのままオブジェクト先頭を指すので「Factory<Hoge> の内容」の先頭を指す。
Object* へキャストする場合は、内部の基本クラスのオブジェクトの先頭を指すので、「Object の内容」の先頭を指す。
なので、Factory<Hoge> の内容(とパディング)で 8 バイト確保されている場合には、Object* へキャストするとポインタ値が +8 される。
多分、ARM コンパイラと VC でオブジェクトのメモリレイアウトが違うんじゃない?
0444439
2007/05/15(火) 01:45:15どうやら逆に勘違いしていたようです。
>>443
なるほと、そういうことなのですね。
あれから自分でも色々試し、色々と分かるようになりました。
私も途中で>>424の問題とぶつかりましたが、私の場合は
基本的にスマートポインタを使うようにし、派生クラスから基底クラスへキャストした際に
派生のポインタと基底のポインタから差分を取り、キャストオフセット値(?)として
スマートポインタ内部に保存して、必要なときに取り出せるようにしました。
これで大きな問題が解決でき、やっと作業が進行しそうです。
皆さん、本当にありがとうございました。
0445デフォルトの名無しさん
2007/05/18(金) 00:30:07GJと言いたいとこだが、ちょっと喋るの早すぎないかw
0446デフォルトの名無しさん
2007/05/18(金) 19:31:55そもそも申し込みしてないんだが。w
0447デフォルトの名無しさん
2007/05/22(火) 13:24:16過去ログ見たがケーブルが悪いとか赤外線があるとかあったが、いまいち良い情報が見つからない。
ちなみに今は純正使ってる。
誰かオススメあったらkwsk
0448デフォルトの名無しさん
2007/05/22(火) 13:29:490449デフォルトの名無しさん
2007/05/23(水) 03:51:18どうせユーザー数は少ないんだし切り捨てたいんだけど…
KではBREW2.1はとっくに眼中にないわけで
公式に「もうBREW2.1は忘れていいから、BREW3.1アプリに注力してよ」
とか言っちゃってくれると一番強力なんだけどなー
0450デフォルトの名無しさん
2007/05/23(水) 09:01:232.1でみると課金率下がってるから、もう少しで死滅するんじゃないのか、とは思ってるけど
0451デフォルトの名無しさん
2007/05/23(水) 10:05:360452デフォルトの名無しさん
2007/05/24(木) 11:31:34ICAMERA_GetSizeListで撮影可能な写真のサイズを取得しようと
思っているのですが上手くいきません。
機種はW51Hです。
ttp://brewforums.qualcomm.com/showthread.php?t=9219
こちらの掲示板の内容を参考に次のような処理を作りました。
int Count = 0;
AEESize *pList;
boolean bRange;
ICamera* pICamera;
if( ISHELL_CreateInstance( pIShell , AEECLSID_CAMERA, (void**)&pICamera ) == SUCCESS )
{
pList = (AEESize*)CAM_MODE_SNAPSHOT;
if( ICAMERA_GetSizeList( pICamera , &pList , &bRange ) == SUCCESS )
{
for( ; pList[Count].cx > 0 && pList[Count].cy > 0 ; Count++ );
}
}
ICAMERA_Release( pICamera );
その結果、上記のfor文を実行した場合アプリが落ちてしまいます。
また、pListの中にはありえないようなサイズ(万単位×1とか0とか)の値が返ってきていました。
何が問題なのでしょうか。
0453デフォルトの名無しさん
2007/05/24(木) 11:48:28bRangeは使わないの?
0454デフォルトの名無しさん
2007/05/24(木) 11:49:590455デフォルトの名無しさん
2007/05/24(木) 14:45:32>453
NULL で終結した範囲のペアリスト (2 の倍数) とありますが具体的なイメージが掴めていません。
1バイトずつ見ていって00のバイトで区切ってcxとcyが設定されているといった感じなのでしょうか
また、bRangeの戻り値はFALSEだったのですが、APIリファレンスにはFALSEの場合が
載っていませんでした。FALSEの場合の資料は有るのでしょうか。
>454
ソース上の
pList[Count]に0が入っている状態がNULLだと思い、pList[Count].cx > 0 && pList[Count].cy > 0
といった条件にしました。
どの部分がNULLの場合、終端ということになるのでしょうか
0456デフォルトの名無しさん
2007/05/24(木) 17:56:49APIリファレンス見間違えました
ポインタじゃないのでpListの中身が0の時で合っているのかもしれません
■ このスレッドは過去ログ倉庫に格納されています