Re: Modem Port
Re: Modem Port
- Subject: Re: Modem Port
- From: email@hidden
- Date: Thu, 14 Mar 2002 22:31:59 +0000
It would help me tremendously if you were to highlight
the change you made that specifically finds the internal
modem? I can't find it from browsing through it. How do
you know it is the internal modem as opposed to an
external USB modem? I suppose you don't, and you
shouldn't care. As long as it's a modem.
Adam
>
Check out Apple's serial port sample code for OS X. Here's the code I use to
>
identify the internal modem port, which I adapted from that sample:
>
>
kern_return_t ModemConnection::FindModems(io_iterator_t *matchingServices)
>
{
>
kern_return_t kernResult;
>
mach_port_t masterPort;
>
CFMutableDictionaryRef classesToMatch;
>
kernResult = IOMasterPort(MACH_PORT_NULL, &masterPort);
>
if (KERN_SUCCESS != kernResult)
>
return kernResult;
>
// Serial devices are instances of class IOSerialBSDClient
>
classesToMatch = IOServiceMatching(kIOSerialBSDServiceValue);
>
if (classesToMatch == NULL)
>
return KERN_FAILURE;
>
else {
>
CFDictionarySetValue(classesToMatch,
>
CFSTR(kIOSerialBSDTypeKey),
>
CFSTR(kIOSerialBSDModemType));
>
}
>
kernResult = IOServiceGetMatchingServices(masterPort, classesToMatch,
>
matchingServices);
>
return kernResult;
>
}
>
>
// Given an iterator across a set of modems, return the BSD path to the
>
first one.
>
// If no modems are found the path name is set to an empty string.
>
kern_return_t ModemConnection::GetModemPath(io_iterator_t
>
serialPortIterator, char *bsdPath, CFIndex maxPathSize)
>
{
>
io_object_t modemService;
>
kern_return_t kernResult = KERN_FAILURE;
>
Boolean modemFound = false;
>
// Initialize the returned path
>
*bsdPath = '\0';
>
while ((modemService = IOIteratorNext(serialPortIterator)) &&
>
!modemFound)
>
{
>
CFTypeRef modemNameAsCFString;
>
CFTypeRef bsdPathAsCFString;
>
modemNameAsCFString = IORegistryEntryCreateCFProperty(modemService,
>
>
CFSTR(kIOTTYDeviceKey),
>
>
kCFAllocatorDefault,
>
0);
>
if (modemNameAsCFString)
>
{
>
char modemName[128];
>
Boolean result;
>
result = CFStringGetCString((const
>
CFStringRef)modemNameAsCFString,
>
modemName,
>
sizeof(modemName),
>
kCFStringEncodingASCII);
>
CFRelease(modemNameAsCFString);
>
if (result)
>
{
>
DPRINT2("Serial stream name: %s\n", modemName);
>
modemFound = true;
>
kernResult = KERN_SUCCESS;
>
}
>
}
>
bsdPathAsCFString = IORegistryEntryCreateCFProperty(modemService,
>
>
CFSTR(kIOCalloutDeviceKey),
>
>
kCFAllocatorDefault,
>
0);
>
if (bsdPathAsCFString)
>
{
>
Boolean result;
>
result = CFStringGetCString((const
>
CFStringRef)bsdPathAsCFString,
>
bsdPath,
>
maxPathSize,
>
kCFStringEncodingASCII);
>
CFRelease(bsdPathAsCFString);
>
}
>
(void) IOObjectRelease(modemService);
>
}
>
return kernResult;
>
}
>
>
On 3/14/02 1:19 PM, "email@hidden" <email@hidden> wrote:
>
>
> Hi,
>
>
>
> Maybe for Morgan it was Mac OS 9 only, but what is the
>
> point of writing software for the Mac OS 9 only these
>
> days?
>
>
>
> Adam
>
>> This is specifically a MacOS 9 discussion. This does not apply to X
>
>> or even classic . I though you were looking for specific info on how
>
>> to "uniquely" identify the Internal modem port.
>
>>
>
>>
>
>> Roger
>
>>
>
>> At 4:28 PM +0000 3/14/02, email@hidden wrote:
>
>>> Hi,
>
>>>
>
>>> I thought leapIn and leapOut wouldn't even be the names
>
>>> in Mac OS X? I think counting on leapIn/leapOut is not
>
>>> very robust.
>
>>>
>
>>> In my software, SoftTTY (TTY for the Mac), I want to
>
>>> ignore any Infrared ports when auto-configuring. What I
>
>>> do is filter serial ports with "irda" or "infrared" in
>
>>> the name (not the "." driver name or bsd path). This is
>
>>> good at eliminating most infrared ports and doesn't
>
>>> exclude any non-infrared ports.
>
>>>
>
>>> Adam
>
>>>
>
>>>
>
>>>> .LeapIn and .LeapOut would get you the internal modem on all
>
>>>> machines which Apple says is capable of running MacOS X (this entry
>
>>>> is only present if the modem is available) , it won't work for
>
>>>> earlier machines such as the first powerbook g3, or the beige g3
>
>>>> tower with 2 serial ports.
>
>>>>
>
>>>> In any event you should always open .aIn and .aOut (just drop in
>
>>>> to Macsbug and type drvr to get the correct case...) since
>
>>>> .LeapIn/.LeapOut is patched into the driver open call and will work
>
>>>> properly on a machine where .aIn really points to the modem.
>
>>>>
>
>>>> Roger
>
>>>>
>
>>>>
>
>>>> At 3:16 PM +0000 3/14/02, Quinn wrote:
>
>>>>> At 18:28 -0800 13/3/02, Morgan Redman wrote:
>
>>>>>> I remember a while back, I got help with how to identify which serial
>
>>>>>> port
>
>>>>>> was actually an IrDA port. ( by identifying the serial port with
>
>>>>>> input/output drivers named ".IrIn" / ".IrOut"
>
>>>>>>
>
>>>>>> Now I need to know how to identify which serial port is the
>
>>>> Internal Modem.
>
>>>>>>
>
>>>>>> the input / output driver name for the Internal Modem on my machine is
>
>>>>>> ".LeapIn" / ".LeapOut"
>
>>>>>> is this constant on all macs?
>
>>>>>
>
>>>>> Testing for these driver names is about as reliable as testing for
>
>>>>> ".IrIn"/".IrOut". We've never documented that this technique will
>
>>>>> work, but it's the best solution I know of.
>
>>>>>
>
>>>>> S+E
>
>>>>> --
>
>>>>> Quinn "The Eskimo!" <http://www.apple.com/developer/>
>
>>>>> Apple Developer Technical Support * Networking, Communications, Hardware
>
>>>>> _______________________________________________
>
>>>>> macnetworkprog mailing list | email@hidden
>
>>>>> Help/Unsubscribe/Archives:
>
>>>>> http://www.lists.apple.com/mailman/listinfo/macnetworkprog
>
>>>>> Do not post admin requests to the list. They will be ignored.
>
>>>>
>
>>>>
>
>>>> --
>
>>>> _______________________________________________
>
>>>> macnetworkprog mailing list | email@hidden
>
>>>> Help/Unsubscribe/Archives:
>
>>>> http://www.lists.apple.com/mailman/listinfo/macnetworkprog
>
>>>> Do not post admin requests to the list. They will be ignored.
>
>>
>
>>
>
>> --
>
> _______________________________________________
>
> macnetworkprog mailing list | email@hidden
>
> Help/Unsubscribe/Archives:
>
> http://www.lists.apple.com/mailman/listinfo/macnetworkprog
>
> Do not post admin requests to the list. They will be ignored.
>
>
>
>
>
>
--
>
[ Mike Cohen | http://www.macmegasite.com/ ]
>
[ email@hidden | http://www.worldbeatplanet.com/ ]
>
>
Sound is the same for all the world - Youssou N'dour, "Eyes Open"
>
_______________________________________________
>
macnetworkprog mailing list | email@hidden
>
Help/Unsubscribe/Archives:
>
http://www.lists.apple.com/mailman/listinfo/macnetworkprog
>
Do not post admin requests to the list. They will be ignored.
_______________________________________________
macnetworkprog mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/macnetworkprog
Do not post admin requests to the list. They will be ignored.