• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
RE: Property plugins
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Property plugins


  • Subject: RE: Property plugins
  • From: "Markus Bollinger" <email@hidden>
  • Date: Mon, 24 Feb 2003 14:17:49 +0100
  • Thread-topic: Property plugins

Hello!

We have a driver plugin for additionnal specific controls.
We use IORegistryEntrySetCFProperty() to pass some
information down to the driver (see Laurent Cerveau's mail below)

This works fine up to OS X 10.2.3
Now with version 10.2.4 I get the error 0xE00002BC returned from
this function.

Anybody has an idea where this might come from ?

Best regards,
Markus.


>
>
> ----------
> De : Laurent Cerveau
> Envoyi : Thursday, December 5, 2002 6:05 AM
> @ : Emmett James
> Cc : email@hidden
> Objet : Re: Property plugins
>
> On Thursday, December 5, 2002, at 02:11 PM, Emmett James wrote:
>
> > Now my question is, where does this call to
> > IORegistryEntrySetCFProperty()
> > end up in the KEXT? In MyAudioDevice:setProperties(OSObject *
> > properties)?
> >
> > If so, what is the nature of the OSbject * properties argument?
> > In IOAudioControl, I see that this is in fact an OSDictionary.
> > I have 20 different custom properties. Does this mean my
> > setProperties()
> > implementation must look through this dictionary for each of my
> > properties'
> > key names to see which one is getting set in this particular call?
> >
> > What I would have expected, is that the IORegistryEntrySetCFProperty()
> > call would have a more direct analog in the KEXT, e.g. some function
> > whose arguments were a registry key and a property value.
> >
> >
>
> Emmett
>
> <Preamb> : I may have become rusty on the topic and did not look at
> the latest incarnation of plugin in CoreAudio so Jeff please correct me
> if I am outdated :-) </preamb>
>
> The property is associated to an an IOAudioControl in your driver that
> will "receive it". And when you associate an handler with it it will
> receive the change. Let's take an example. Assuming you are writing a
> property that will be a float value between 0 and 1. However as you can
> not do any floating point in the kernel (I mean in general I would not
> go into the case of clipping functions...) you will create an
> associated level control that can go from 0 to 128
>
> In your driver code you create a level control that does
>
> myControlForCustomProperty = IOAudioLevelControl::create(128,0,128,0,
> 0, kIOAudioControlChannelIDAll, kIOAudioControlChannelNameAll,
> kCustomPropertyThing,
> 0, 'cust');
>
> if( NULL != myControlForCustomProperty) {
>
> myControlForCustomProperty-
> >setValueChangeHandler((IOAudioControl::IntValueChangeHandler)subRatioCh
> angeHandler, this);
> myControlForCustomProperty->release();
> }
>
> And you write the appropriate handler .At first in the Plugin open code
> you need to get a reference to this control (i.e an io_connect_t that
> we will call gReferenceToMyCustomControl here) Now in your plugin code
> when you get the custom property passes to your plugin this should be
> received by your handler.Your plugin code shoudl look like
>
> OSStatus AudioDriverPlugInDeviceSetProperty( AudioDeviceID inDevice,
> const AudioTimeStamp* inWhen,
> UInt32 inLine,
> Boolean isInput,
>
> AudioDevicePropertyID inPropertyID,
> UInt32 inPropertyDataSize,
> const void* inPropertyData){
> char theProp[5];
> OSStatus theResult;
> float theFloatVal, *theFloatValPtr;
> SInt32 theIntval;
> CFNumberRef theCFValue;
>
> theResult = kAudioHardwareUnknownPropertyError;
>
> switch (inPropertyID) {
> case kCustomPropertyThing:
> theFloatValPtr = (float *)inPropertyData;
> theFloatVal = (*theFloatValPtr);
> if(theFloatVal < 0) theFloatVal = 0;
> if(theFloatVal > 1) theFloatVal = 1;
> theIntval = (SInt32) (theFloatVal*128);
> theCFValue = CFNumberCreate(kCFAllocatorDefault,
> kCFNumberSInt32Type, &theIntval);
> theResult =
> IORegistryEntrySetCFProperty(gReferenceToMyCustomControl,
> CFSTR("IOAudioControlValue"), theCFValue);
> CFRelease(theCFValue);
> theResult = noErr;>
> break;
> default:
> break;
> }
>
> return theResult;
> }
>
> Laurent
>
>
> ------------------------
> Laurent Cerveau
> EPM Apple R&D France
> Applications Division
> email@hidden
> _______________________________________________
> coreaudio-api mailing list | email@hidden
> Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/coreaudio-api
> Do not post admin requests to the list. They will be ignored.
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.

  • Prev by Date: Re: Window closure
  • Next by Date: Idle processing
  • Previous by thread: Trouble with pan and kMusicDeviceParam_Volume
  • Next by thread: Idle processing
  • Index(es):
    • Date
    • Thread