【オリジナル】簡単なkey-valueのメモリデータベースで、mcu上で実行できます.


stringを格納し、格納し、取得できる非常に簡単なメモリデータベースと考えることができます.1.単片機で走ることができます.2.インタフェースはとても簡単です.
 
ucomlib
A simple key-value memory database
 
1.インタフェース定義
ucomlibインタフェースは主に以下のとおりです.
  • 初期化および非初期化.
  • データ読み出しおよび記憶インタフェース.
  • タイムアウトメカニズム.

  •  
    1.1初期化と非初期化
    int CommuInit(void);
    

     
    1.2データ読出しと記憶インタフェース
    int CommSaveMsg(const int msgId,const char *msgData,unsigned int dataLen)
      :
          
    
      :
      msgId:   ID
      msgData:     
      dataLen:    
    
    
    int CommGetMsg(const int msgId,char *msgData,unsigned int* pDataLen)
    
      :
          (      )
      :
      msgId:  ID
      msgData:        
      pDataLen:        
    

     
    1.3タイムアウトメカニズム関連.
    タイムアウト処理機能には、ユーザーがタイムアウト処理関数を実装し、インタフェースを呼び出す必要があります.
    int CommSetEventHandler(EVENT_HANDLER ev)
    

    を選択して設定できます.
    ユーザのタイミングプログラムで呼び出す必要があります.
    int OnTimer()
    

    カウントを更新してタイムアウトイベントを開始します
     
    1.5ユーザーが実現するコールバック関数
    1.イベント(タイムアウト)処理関数
           :typedef int (*EVENT_HANDLER)(const int event,const int msgId)
    

    2.反発ロック
    int CRITICAL_INIT();
    void ENTER_CRITICAL();
    void EXIT_CRITICAL();
    int CRITICAL_DEINIT();
    

    MCUではオフ割り込みとオン割り込みで実現でき、linuxではスレッドロックpthread_mutex_t.
    3.コマンド(応答)処理関数:
             :typedef int (*command_handler_t)(void *para)。
    

     
    2.適用例:
    ここでは、同時環境アクセスの簡単な例を実現します.コード:
    main.c