Actuator* Actuator::creatObject( uint8_t ID, uint8_t pin) { Actuator *pObject = NULL; /**search**/ pObject = getObject( pin ); if ( pObject ) { return pObject; } if ( objectNum >= ACTUATOR_MAXMUM ) { return NULL; } /**creat **/ switch ( ID ) { case FUNCTION_LED: pObject = new LED( pin ); break; case FUNCTION_RGB: break; case FUNCTION_PLAYER_MINI: if ( PALETTE_PIN_UART == pin) { pObject = new MP3Music( pin, FUNCTION_PLAYER_MINI ); } break; case FUNCTION_ACTUATOR_DIGITAL: pObject = new PinDigitalActuator( pin ); } /**store **/ if ( pObject ) { rigisterObject( pin, pObject ); objectNum++; } return pObject; }
Sensor* Sensor::creatObject( uint8_t ID, uint8_t pin, uint8_t auxiliaryPin) { Sensor *pObject = NULL; /**search**/ pObject = getObject( pin ); if ( pObject ) { return pObject; } if ( objectNum >= SENSOR_MAXNUM ) { return NULL; } /**creat **/ switch ( ID ) { case FUNCTION_SENSOR_DHT22: pObject = new DHT22Sensor( pin ); break; case FUNCTION_SENSOR_BMP085: pObject = new BMP085Sensor( pin ); break; case FUNCTION_SENSOR_GP2Y1010: pObject = new GP2Y1010Sensor( pin, auxiliaryPin ); break; default: ; //nothing } /**store **/ if ( pObject ) { rigisterObject( pin, pObject ); objectNum++; //must be increase after Rigister } return pObject; }