aboutsummaryrefslogtreecommitdiffstats
path: root/AlsaSound/HALayer/IntelHda
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2017-03-11 00:27:30 +0100
committerFulup Ar Foll <fulup@iot.bzh>2017-03-11 00:27:30 +0100
commit521281617cec5d89725c4844eac68b5a772fab57 (patch)
tree74a5a5154c88cdae485fd2f139d50f3bf003ae9d /AlsaSound/HALayer/IntelHda
parent5cb52e556fed8eb0cf74d1052fe413fbb7406b0e (diff)
Work in Progress
Static/Dynamic Lib Fixed. Source Tree cleaned up Compile but to be tested Business Logic not done
Diffstat (limited to 'AlsaSound/HALayer/IntelHda')
-rw-r--r--AlsaSound/HALayer/IntelHda/CMakeLists.txt2
-rw-r--r--AlsaSound/HALayer/IntelHda/IntelHdaHAL.c60
2 files changed, 28 insertions, 34 deletions
diff --git a/AlsaSound/HALayer/IntelHda/CMakeLists.txt b/AlsaSound/HALayer/IntelHda/CMakeLists.txt
index 77218e2..89665e4 100644
--- a/AlsaSound/HALayer/IntelHda/CMakeLists.txt
+++ b/AlsaSound/HALayer/IntelHda/CMakeLists.txt
@@ -22,7 +22,7 @@ INCLUDE_DIRECTORIES(${include_dirs})
##################################################
# Inte-HDA sound card Hardware Abstraction Layer
##################################################
-ADD_LIBRARY(intel-hda-hal MODULE IntelHdaHAL.c ${halsharedlib})
+ADD_LIBRARY(intel-hda-hal MODULE IntelHdaHAL.c )
SET_TARGET_PROPERTIES(intel-hda-hal PROPERTIES
PREFIX ""
diff --git a/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c b/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c
index b04b545..5d668ba 100644
--- a/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c
+++ b/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c
@@ -15,9 +15,20 @@
* limitations under the License.
*/
#define _GNU_SOURCE
-#include "AlsaHalIface.h" // Include Share Interface to Alsa Sound Card HAL
+#include "AudioCommonLib.h"
+#include "SharedHalLib.h" // Include Share Interface to Alsa Sound Card HAL
-/*****************************************************************************
+// Force a hard dependency to ShareHallLib
+PUBLIC char* SharedHalLibVersion;
+
+// Init is call after all binding are loaded
+STATIC int IntelHalInit (const struct afb_binding_interface *itf, struct afb_service service) {
+ DEBUG (itf, "IntelHalBinding Initialised");
+
+ return 0; // 0=OK
+}
+
+/******************************************************************************************
* alsaCtlsMap link hight level sound control with low level Alsa numid ctls.
*
* To find out which control your sound card uses
@@ -25,13 +36,16 @@
* amixer -D hw:xx controls
* amixer -D hw:xx contents
* amixer -D "hw:3" cget numid=xx
- *****************************************************************************/
-STATIC alsaHalCtlMapT alsaHalCtlsMap[]= {
- { .control=Master_Playback_Volume, .numid=16, .group=OUTVOL, .values=1, .minval=0, .maxval= 87 , .step=0, .acl=RW, .info= "Master Playback Volume" },
- { .control=PCM_Playback_Volume , .numid=27, .group=PCMVOL, .values=2, .minval=0, .maxval= 255, .step=0, .acl=RW, .info= "PCM Playback Volume" },
- { .control=PCM_Playback_Switch , .numid=17, .group=SWITCH, .values=1, .minval=0, .maxval= 1 , .step=0, .acl=RW, .info= "Master Playback Switch" },
- { .control=Capture_Volume , .numid=12, .group=INVOL , .values=2, .minval=0, .maxval= 31 , .step=0, .acl=RW, .info= "Capture Volume" },
- { .numid=0 } /* marker for end of the array */
+ *
+ * When automatic mapping to Alsa numid is not enough a custom callback might be used
+ * .cb={.handle=xxxx, .callback=(json_object)MyCtlFunction(struct afb_service service, int controle, int value, const struct alsaHalCtlMapS *map)};
+ ********************************************************************************************/
+STATIC alsaHalMapT alsaHalMap[]= {
+ { .alsa={.control=Master_Playback_Volume,.numid=16,.group=OUTVOL,.values=1,.minval=0,.maxval= 87 ,.step=0,.acl=RW}, .info= "Master Playback Volume" },
+ { .alsa={.control=PCM_Playback_Volume ,.numid=27,.group=PCMVOL,.values=2,.minval=0,.maxval= 255,.step=0,.acl=RW}, .info= "PCM Playback Volume" },
+ { .alsa={.control=PCM_Playback_Switch ,.numid=17,.group=SWITCH,.values=1,.minval=0,.maxval= 1 ,.step=0,.acl=RW}, .info= "Master Playback Switch" },
+ { .alsa={.control=Capture_Volume ,.numid=12,.group=INVOL ,.values=2,.minval=0,.maxval= 31 ,.step=0,.acl=RW}, .info= "Capture Volume" },
+ { .alsa={.numid=0}, .cb={.callback=NULL, .handle=NULL}} /* marker for end of the array */
} ;
/***********************************************************************************
@@ -46,29 +60,9 @@ STATIC alsaHalCtlMapT alsaHalCtlsMap[]= {
*
***********************************************************************************/
PUBLIC alsaHalSndCardT alsaHalSndCard = {
- .name = "HDA Intel PCH",
- .info = "Hardware Abstraction Layer for IntelHDA sound card",
- .ctls = alsaHalCtlsMap,
-};
-
-/***********************************************************************************
- * AlsaHalSndT provides
- * - cardname used to map a given card to its HAL
- * - ctls previously defined AlsaHalMapT control maps
- * - info free text
- *
- * WARNING: name should fit with 'aplay -l' as it used to map from devid to HAL
- * you may also retreive shortname when AudioBinder is running from a browser
- * http://localhost:1234/api/alsacore/getcardid?devid=hw:xxx
- *
- ***********************************************************************************/
-PUBLIC struct afb_binding alsaHalBinding = {
- /* description conforms to VERSION 1 */
- .type= AFB_BINDING_VERSION_1,
- .v1= {
- .prefix= "intel-hda",
+ .name = "HDA Intel PCH",
.info = "Hardware Abstraction Layer for IntelHDA sound card",
- }
+ .ctls = alsaHalMap,
+ .prefix="intel-hda",
+ .initCB=IntelHalInit, // if NULL no initcallback
};
-
-