microsoft / DMF

Driver Module Framework
MIT License
312 stars 78 forks source link

Question Regarding SoundWire bus support #188

Closed alkovacs closed 2 years ago

alkovacs commented 2 years ago

@samtertzakian Will support for the soundwire bus be added as it is much of a control and event bus as GPIO, SPB - i.e. i2c - spi ?

samtertzakian commented 2 years ago

Hi @alkovacs,

I am personally not familiar with Soundwire. Let me ask the rest of the team about your query.

You are, of course, welcome to add the support and we are happy to add that support to DMF Library after review. The Soundwire Module would have GPIO, SPB Child Modules per the information you provided above.

Let me get back to you.

samtertzakian commented 2 years ago

Sorry for the delay...I am still trying to get more information. I will get back to you with an answer soon.

alkovacs commented 2 years ago

Thanks Sam!

Sent from Yahoo Mail for iPad Alexander Kovacs845-625-4422

On Friday, November 12, 2021, 14:41, Sam Tertzakian @.***> wrote:

Sorry for the delay...I am still trying to get more information. I will get back to you with an answer soon.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

alkovacs commented 2 years ago

Sam,Another, somewhat related question…

In one module I have 

 

include 

include 

 

It is in this module where I call my DmfModulesAdd(

In WDFDEVICE Device,

In PDMFMODULE_INIT DmfModuleInit

)

 

I would like to pass the Device and DmfModuleInit params into another method that will implement class (device) specific initialization and implementation

of other DMF modules (thread, interrupt) the problem is that in the base class where I try to set the virtual method for the class (devices) to override, I got an error that

PDMFMODULE_INIT was undefined. No problem I thought, I added DmfDefinitions.h like so #include , to the modules header. 

I then get a barrage of errors like:  

C:\EWDK\Program Files\Windows Kits\10\Include\10.0.22000.0\km\ntifs.h(85,52): error C2371: 'PEPROCESS': redefinition; different basic types

1>C:\EWDK\Program Files\Windows Kits\10\Include\10.0.22000.0\km\wdm.h(84): message : see declaration of 'PEPROCESS'

1>C:\EWDK\Program Files\Windows Kits\10\Include\10.0.22000.0\km\ntifs.h(86,49): error C2371: 'PETHREAD': redefinition; different basic types

1>C:\EWDK\Program Files\Windows Kits\10\Include\10.0.22000.0\km\wdm.h(85): message : see declaration of 'PETHREAD'

1>C:\EWDK\Program Files\Windows Kits\10\Include\10.0.22000.0\km\ntifs.h(2421,1): error C2375: 'WdmlibRtlInitUnicodeStringEx': redefinition; different linkage

1>C:\EWDK\Program Files\Windows Kits\10\Include\10.0.22000.0\km\wdmsec.h(417): message : see declaration of 'WdmlibRtlInitUnicodeStringEx'

 

If I just define PDMFMODULE in the header as it is in DmfDefinitions.h file,

define PDMFMODULE_INIT PVOID

It builds fine….

From:Alexander J Kovacs845-625-4422

On Saturday, November 13, 2021, 12:26, @. @.> wrote:

Thanks Sam!

Sent from Yahoo Mail for iPad Alexander Kovacs845-625-4422

On Friday, November 12, 2021, 14:41, Sam Tertzakian @.***> wrote:

Sorry for the delay...I am still trying to get more information. I will get back to you with an answer soon.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

samtertzakian commented 2 years ago

You should not include files as you are doing...that is not correct. DMF is designed so that you only need to include:

include

include "DmfModules.Library.h"

DmfModules.Library.h automatically includes everything you need:

  1. DMF Framework
  2. All the DMF Modules.
  3. All the WDF and NT dependencies.

If you include as you are doing it will not not work because there are many dependencies as well as the C and C++ compatibility issues that are all solved for you. Once you have included DmfModules.Library.h you can access any Module with ease.

Can you do that? Delete all your #include statements and replace with the above two lines. If you still have an issue, let me know.

Sorry, I just realized you said, "in one Module..." The above instructions are for the Client driver.

For Modules, you should do exactly what every other Module does:

// DMF and this Module's Library specific definitions. //

include "DmfModule.h"

include "DmfModules.Library.h"

include "DmfModules.Library.Trace.h"

if defined(DMF_INCLUDE_TMH)

include "Dmf_....tmh"

endif

In this case, (for Modules only) you add one extra #include before DmfModules.Library.h: #include "DmfModule.h"

This allows the Module to access APIs that are only accessible by Modules and not Client drivers.

Please reply here or send private email to dmf-feedback@microsoft.com if you still have issues or questions.

alkovacs commented 2 years ago

Sam, Thank you very much! I removed all my references to the EWDK (wdm, wdm, ntddk, etc…) headers from my code and used only the DMF includes that you suggested. I had to restructure my local headers a little (they now make more sense) and everything works great… thanks

From:Alexander J Kovacs845-625-4422

On Monday, November 15, 2021, 18:40, Sam Tertzakian @.***> wrote:

You should not include files as you are doing...that is not correct. DMF is designed so that you only need to include:

include

include "DmfModules.Library.h"

DmfModules.Library.h automatically includes everything you need:

If you include as you are doing it will not not work because there are many dependencies as well as the C and C++ compatibility issues that are all solved for you. Once you have included DmfModules.Library.h you can access any Module with ease.

Can you do that? Delete all your #include statements and replace with the above two lines. If you still have an issue, let me know.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

samtertzakian commented 2 years ago

Hi... Great to hear. I will verify documentation is clear on this point. Probably it is not. It is not the first time this issue has come up.

samtertzakian commented 2 years ago

Hi, I have made progress in SoundWire query...but I still need to gather more information. I will update this thread when I have made more progress. I hope that will happen this week.

samtertzakian commented 2 years ago

Hi I have not forgotten about you. The person who has the definitive answer seems to be on vacation or otherwise not available right now. I am still trying.

alkovacs commented 2 years ago

Thank you!

From:Alexander J Kovacs845-625-4422

On Sunday, November 28, 2021, 14:04, Sam Tertzakian @.***> wrote:

Hi I have not forgotten about you. The person who has the definitive answer seems to be on vacation or otherwise not available right now. I am still trying.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

samtertzakian commented 2 years ago

I have just been told: Microsoft will support Soundwire (SDCA) as inbox audio driver in the near future. That work is ongoing. It is recommended that you join "SDCA working group meetings" for the latest information. Thus, I don't think it is beneficial for us (DMF Team) to support that in a Module or in DMF directly. Of course, you are welcome to write your own Soundwire related DMF Module(s) if you think that is beneficial to your project.

I will close this issue for now. If you have more questions related to this or any other issue, please create an issue, reply to this thread or send an email to dmf-feedback@microsoft.com.