ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2014年4月22日 星期二

用 nautilus 的 connect to server 可以正確連到某些 windows share .
但是用 mount cifs 不行。

nautilus mount 是用 gvfs-mount 做的。

要找到/設定 gvfs-mount 的 mount point,參考:http://askubuntu.com/questions/61196/why-do-my-gvfs-mounts-not-show-up-under-gvfs-or-run-user-login-gvfs

一般(?)會 mount 在 ~/.gvfs

如果沒有的話,可以這樣設定,較他以後都 mount 在 ~/.gvfs:
/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs
然後

2014年4月15日 星期二

input_report_abs, TRACKING_ID, touch points

續: http://r40eubuntu.blogspot.tw/2010/12/input-inputevent-inputreportxx.html

touch driver 對於touch 座標的回報,是用:
static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value)
{
        input_event(dev, EV_ABS, code, value);
}

就是固定 type 是 EV_ABS:
#define EV_ABS                  0x03

其中的 code:
/*
 * Absolute axes
 */

#define ABS_X                   0x00
#define ABS_Y                   0x01
#define ABS_Z                   0x02
#define ABS_RX                  0x03
#define ABS_RY                  0x04
#define ABS_RZ                  0x05
#define ABS_THROTTLE            0x06
#define ABS_RUDDER              0x07
#define ABS_WHEEL               0x08
#define ABS_GAS                 0x09
#define ABS_BRAKE               0x0a
#define ABS_HAT0X               0x10
#define ABS_HAT0Y               0x11
#define ABS_HAT1X               0x12
#define ABS_HAT1Y               0x13
#define ABS_HAT2X               0x14
#define ABS_HAT2Y               0x15
#define ABS_HAT3X               0x16
#define ABS_HAT3Y               0x17
#define ABS_PRESSURE            0x18
#define ABS_DISTANCE            0x19
#define ABS_TILT_X              0x1a
#define ABS_TILT_Y              0x1b
#define ABS_TOOL_WIDTH          0x1c

#define ABS_VOLUME              0x20
#define ABS_MISC                0x28

#define ABS_MT_SLOT             0x2f    /* MT slot being modified */
#define ABS_MT_TOUCH_MAJOR      0x30    /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR      0x31    /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR      0x32    /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR      0x33    /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION      0x34    /* Ellipse orientation */
#define ABS_MT_POSITION_X       0x35    /* Center X ellipse position */
#define ABS_MT_POSITION_Y       0x36    /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE        0x37    /* Type of touching device */
#define ABS_MT_BLOB_ID          0x38    /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID      0x39    /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE         0x3a    /* Pressure on contact area */
#define ABS_MT_DISTANCE         0x3b    /* Contact hover distance */
#define ABS_MAX                 0x3f
#define ABS_CNT                 (ABS_MAX+1)

一個 touch driver report 的 code:
            input_report_abs(data->input_dev, ABS_MT_POSITION_X,  readx[i]);
            input_report_abs(data->input_dev, ABS_MT_POSITION_Y,  ready[i]);
            input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1);
            input_report_abs(data->input_dev, ABS_MT_TRACKING_ID, finger_id[i]);
            input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, 0);
            input_mt_sync(data->input_dev);
其中的 ABS_MT_TRACKING_ID 就是 touch point 的 id.
有兩點的話,第一點就是 0, 第二點就是 1

touch Release 時的 code:
    input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, 0);
    input_sync(data->input_dev);

PowerOff , Shutdown..

實際上.. Power Off, Hibernation, Screen Off 都是..
  • PhoneWindowManager.java 的 key handler 處理 Power Key
  • 叫起 Global Dialog, 畫出 Power Off Dialog, 或是直接 call ShutdownThrea.
  • ShutdownThread, broadcast message, call 底層的 reboot 或 shutdown
ShutdownThread:

重要變數就是 mReboot...
決定是要 reboot 還是關機。
reboot 通常是作 recovery 時要的。

public static void shutdown(final Context context, boolean confirm)

confirm 是說,需不需要 ShutdownThread 畫出 Dialog 讓 user confirm


最後 call beginShutdownSequence()
他基本就是 啟動 ShutdownThread()..

ShutdownThread 的主體 run() 被改寫了。
原來是作 reboot 和 poweroff

這裡,power off 被改成 hibernation
--- 所以,系統已經沒有辦法 power off 了.....

他直接用了 mReboot 變數:
 if(mReboot)
    reboot
 else
    hibernation

所以沒辦法達到三個狀態選擇。 (真懶)

又因為 run( ) 是 ShutdownThread 的主體,所以沒版法作兩套,讓 caller 決定 run 哪一個。
所以只好用醜陋的方法。

再加一個變數 IWantToPowerOff -- 代表真的是要PowerOff, 不是 Hibernation

2014年4月8日 星期二

adb . mtp ..nexus 7

因為裝過 htc 的 adb driver ,所以接 其他 android 裝置都部會動。

接上 Nexus 7 也出現 Android ADB devices

所以到 driver, 更新 驅動城市。
列出相容讓我自己選。
選 usb composite device. 而不是 android debug XXX

之後,就出現 MTP 裝置。..
但是有驚嘆號。

再差拔一次 Nexus 7,然後一樣,更新 驅動城市,自己選。
只有一個出現: mtp 裝置。

選玩,就出現 可攜式裝置,有 Nexus 7.

直接點開就可以。


Windows XP 比較麻煩,他要:
  • MTP install kit
  • Media Player 11
裝完以後,修改 C:/Windoes/inf/:
;Device is identified by Microsoft OS descriptor
;If your device does not support it, use specific VID & PID for identification
;
[Generic.NTx86]
%GenericMTP.DeviceDesc%=MTP, USB\MS_COMP_MTP
%GenericMTP.DeviceDesc%=MTP, USB\VID_18D1&PID_4E41&PMI_00

[Generic.NTamd64]
%GenericMTP.DeviceDesc%=MTP, USB\MS_COMP_MTP
%GenericMTP.DeviceDesc%=MTP, USB\VID_18D1&PID_4E41&PMI_00
重開機,插入 Nexus 7,開啟 mtp.

裝置管理員會出現 "可西式裝置", nexus 7。
有驚嘆號。

然後選更新驅動程式。
自己選裝置 --- Android USB 裝置。
然後就會出現一個 MTP 次項。
選他。驚嘆號就不見了。

然後在 我得電腦 就會有 可西式裝置, Nexus 7.

2014年4月2日 星期三

android WAV recorder..

ref:
  • http://code.google.com/p/krvarma-android-samples/source/browse/#svn%2Ftrunk%2FAudioRecorder.2%2Fsrc%2Fcom%2Fvarma%2Fsamples%2Faudiorecorder
  • http://www.devlper.com/2010/12/android-audio-recording-part-2/

這個 http://www.cl.cam.ac.uk/research/dtg/android/hertz/ 比較好。

而且有 opensource.

.. 已經 fork 在 github https://github.com/checko/hertz/tree/mytest, 並且依據 800x480 的修改,還有 48000 的 sampling rate...

標籤

網誌存檔