示例#1
0
bool
MolEnet::createMediumTables()
{
	IONetworkMedium *medium;
	UInt32 i;

	mediumDict = OSDictionary::withCapacity( sizeof(mediumTable)/sizeof(mediumTable[0]) );
	if( !mediumDict )
		return false;

	for( i=0; i<sizeof(mediumTable)/sizeof(mediumTable[0]); i++ ) {
		medium = IONetworkMedium::medium( mediumTable[i].type, mediumTable[i].speed );
		if( medium ) {  
			IONetworkMedium::addMedium( mediumDict, medium );
			medium->release();
		}
	}

	if( !publishMediumDictionary( mediumDict ) )
		return false;

	medium = IONetworkMedium::getMediumWithType( mediumDict, kIOMediumEthernetAuto );
	setCurrentMedium( medium );

	return true;    
}
示例#2
0
bool darwin_iwi3945::addMediumType(UInt32 type, UInt32 speed, UInt32 code, char* name) {	
    IONetworkMedium	* medium;
    bool              ret = false;
    
    medium = IONetworkMedium::medium(type, speed, 0, code, name);
    if (medium) {
        ret = IONetworkMedium::addMedium(mediumDict, medium);
        if (ret)
            mediumTable[code] = medium;
        medium->release();
    }
    return ret;
}
bool NullEthernet::setupMediumDict()
{
	IONetworkMedium *medium;
    UInt32 i;
    bool result = false;

    m_mediumDict = OSDictionary::withCapacity(MEDIUM_INDEX_COUNT + 1);
    if (m_mediumDict) {
        for (i = MEDIUM_INDEX_AUTO; i < MEDIUM_INDEX_COUNT; i++) {
            medium = IONetworkMedium::medium(mediumTypeArray[i], mediumSpeedArray[i], 0, i);
            
            if (!medium)
                goto error1;

            result = IONetworkMedium::addMedium(m_mediumDict, medium);
            medium->release();

            if (!result)
                goto error1;

            m_mediumTable[i] = medium;
        }
    }
    result = publishMediumDictionary(m_mediumDict);
    
    if (!result)
        goto error1;

done:
    return result;
    
error1:
    AlwaysLog("NullEthernet: Error creating medium dictionary.\n");
    m_mediumDict->release();
    
    for (i = MEDIUM_INDEX_AUTO; i < MEDIUM_INDEX_COUNT; i++)
        m_mediumTable[i] = NULL;

    goto done;
}