# HG changeset patch # User lenclud@WUE-9BW295J.ad.garmin.com # Date 1360345208 -3600 # Node ID 0b9403db32efffa16b9556f2c28b12e417caa886 # Parent e4cac218e73fef56ea919dc4a0fcf68d4e9c5176 Basic support for VFD text API. diff -r e4cac218e73f -r 0b9403db32ef SoundGraphAccess.cpp --- a/SoundGraphAccess.cpp Fri Feb 08 17:43:02 2013 +0100 +++ b/SoundGraphAccess.cpp Fri Feb 08 18:40:08 2013 +0100 @@ -11,6 +11,7 @@ #define WM_IMON_UNINIT WM_APP + 1102 #define WM_IMON_IS_INIT WM_APP + 1103 #define WM_IMON_IS_PLUGIN_MODE_ENABLED WM_APP + 1104 +#define WM_IMON_DISPLAY_SET_VFD_TEXT WM_APP + 1105 // #define MAX_LOADSTRING 100 @@ -31,6 +32,11 @@ char gBufferReceiver[256]; char gBufferSender[256]; +// +char gTextFirstLine[256]; +char gTextSecondLine[256]; +wchar_t gTextFirstLine16[256]; +wchar_t gTextSecondLine16[256]; // HWND gWnd; @@ -59,6 +65,8 @@ const char KMsgUninit[]="uninit:"; const char KMsgIsInit[]="is-init:"; const char KMsgIsPluginModeEnabled[]="is-plugin-mode-enabled:"; +const char KMsgSetVfdText[]="set-vfd-text:"; + /** Send a message to our server. @@ -103,6 +111,18 @@ SendMessageToServer(KRspPending); PostMessage(gWnd,WM_IMON_IS_INIT,0,0); } + else if (strstr(aMsg,KMsgSetVfdText)==aMsg) + { + int textLen=strlen(aMsg)-strlen(KMsgSetVfdText); + strncpy(gTextFirstLine,aMsg+strlen(KMsgSetVfdText),textLen); + gTextFirstLine[textLen]='\0'; + OutputDebugStringA(gTextFirstLine); + int convertedChars = MultiByteToWideChar(CP_UTF8, 0, gTextFirstLine, -1, gTextFirstLine16, sizeof(gTextFirstLine16)); + OutputDebugString(gTextFirstLine16); + //IMON API call need to be done from window thread for some reason + SendMessageToServer(KRspPending); + PostMessage(gWnd,WM_IMON_DISPLAY_SET_VFD_TEXT,0,0); + } else { SendMessageToServer(KRspUnknown); @@ -191,6 +211,12 @@ UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); + gTextFirstLine[0]='\0'; + gTextSecondLine[0]='\0'; + gTextFirstLine16[0]='\0'; + gTextSecondLine16[0]='\0'; + + // TODO: Place code here. MSG msg; HACCEL hAccelTable; @@ -427,7 +453,17 @@ SendMessageToServer(KRspFalse); } break; - + // + case WM_IMON_DISPLAY_SET_VFD_TEXT: + if (DSP_SUCCEEDED==IMON_Display_SetVfdText(gTextFirstLine16,gTextSecondLine16)) + { + SendMessageToServer(KRspDone); + } + else + { + SendMessageToServer(KRspError); + } + break; case WM_DSP_PLUGIN_NOTIFY: switch(wParam)