예제 #1
0
status_t BnGoogleOtaAgent::onTransact(uint32_t code,
                                      const Parcel &data,
                                      Parcel *reply,
                                      uint32_t flags)
{

    XLOGI("OnTransact   (%u,%u)", code, flags);

    switch(code) {

    case TRANSACTION_SET_REBOOT_FLAG:
    {
        XLOGI("setRebootFlag\n");
        data.enforceInterface (descriptor);
        reply->writeInt32 (setRebootFlag());
        return NO_ERROR;
    }
    break;

    case TRANSACTION_CLEAR_UPGRADE_RESULT:
    {
        XLOGI("clearUpgradeResult\n");
        data.enforceInterface(descriptor);
        reply->writeInt32(clearUpgradeResult());
        return NO_ERROR;
    }
    break;

    case TRANSACTION_READ_UPGRADE_RESULT:
    {
        XLOGI("readOtaResult\n");
        data.enforceInterface(descriptor);
        reply->writeInt32(readUpgradeResult());
        return NO_ERROR;
    }
    break;

    default:
        return BBinder::onTransact(code, data, reply, flags);
    }

    return NO_ERROR;
}
예제 #2
0
status_t BnDMAgent::onTransact(uint32_t code, const Parcel &data,
		Parcel *reply, uint32_t flags) {

	XLOGI("OnTransact   (%u,%u)", code, flags);
	reply->writeInt32(DM_READ_NO_EXCEPTION);//used for readException

	switch (code) {
	case TRANSACTION_setLockFlag: {
		/*	XLOGI("setLockFlag\n");
		 data.enforceInterface (descriptor);
		 reply->writeInt32 (setLockFlag ());
		 // XLOGI("locked\n");
		 return NO_ERROR;
		 */
		XLOGI("setLockFlag\n");
		data.enforceInterface(descriptor);
		int len = data.readInt32();
		XLOGD("setLockFlag len  = %d\n", len);
		if (len == -1) { // array is null
			reply->writeInt32(0);
		} else {
			char buff[len];
			data.read(buff, len);
			XLOGD("setLockFlag buff  = %s\n", buff);
			reply->writeInt32(setLockFlag(buff, len));
		}
		XLOGI("setLockFlag done\n");
		return NO_ERROR;

	}
		break;
	case TRANSACTION_clearLockFlag: {
		XLOGI("clearLockFlag\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(clearLockFlag());
		XLOGI("cleared\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_readDMTree: {
		XLOGI("readDMTree\n");
		data.enforceInterface(descriptor);
		int size = 0;
		char * ret = readDMTree(size);
		if (ret == NULL) {
			reply->writeInt32(-1);
		} else {
			reply->writeInt32(size);
			reply->write(ret, size);
			free(ret);
		}
		XLOGI("DMTree read done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_writeDMTree: {
		XLOGI("writeDMTree\n");
		data.enforceInterface(descriptor);
		int len = data.readInt32();
		if (len == -1) { // array is null
			reply->writeInt32(0);
		} else {
			char buff[len];
			data.read(buff, len);
			reply->writeInt32(writeDMTree(buff, len));
		}
		XLOGI("DMTree wrote\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_isLockFlagSet: {
		XLOGI("isLockFlagSet\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(isLockFlagSet());
		XLOGI("isLockFlagSet done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_readIMSI: {
		XLOGI("readIMSI\n");
		data.enforceInterface(descriptor);
		int size = 0;
		char * ret = readIMSI(size);
		XLOGD("readIMSI = %s\n", ret);
		if (ret == NULL) {
			reply->writeInt32(-1);
		} else {
			reply->writeInt32(size);
			reply->write(ret, size);
			free(ret);
		}
		XLOGI("readIMSI done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_writeIMSI: {
		XLOGI("writeIMSI\n");
		data.enforceInterface(descriptor);
		int len = data.readInt32();
		XLOGD("writeIMSI len  = %d\n", len);
		if (len == -1) { // array is null
			reply->writeInt32(0);
		} else {
			char buff[len];
			data.read(buff, len);
			XLOGD("writeIMSI buff  = %s\n", buff);
			reply->writeInt32(writeIMSI(buff, len));
		}
		XLOGI("writeIMSI done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_readCTA: {
		XLOGI("readCTA\n");
		data.enforceInterface(descriptor);
		int size = 0;
		char * ret = readCTA(size);
		XLOGD("readCTA = %s\n", ret);
		if (ret == NULL) {
			reply->writeInt32(-1);
		} else {
			reply->writeInt32(size);
			reply->write(ret, size);
			free(ret);
		}
		XLOGI("readCTA done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_writeCTA: {
		XLOGI("writeCTA\n");
		data.enforceInterface(descriptor);
		int len = data.readInt32();
		XLOGD("writeCTA len  = %d\n", len);
		if (len == -1) { // array is null
			reply->writeInt32(0);
		} else {
			char buff[len];
			data.read(buff, len);
			XLOGD("writeCTA buff  = %s\n", buff);
			reply->writeInt32(writeCTA(buff, len));
		}
		XLOGI("writeCTA done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_readOperatorName: {
		XLOGI("readOperatorName\n");
		data.enforceInterface(descriptor);
		int size = 0;
		char * ret = readOperatorName(size);
		if (ret == NULL) {
			reply->writeInt32(-1);
		} else {
			reply->writeInt32(size);
			reply->write(ret, size);
			free(ret);
		}
		XLOGI("readOperatorName done\n");
		return NO_ERROR;
	}
		break;

	case TRANSACTION_setRebootFlag: {
		XLOGI("setRebootFlag\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(setRebootFlag());
		XLOGI("setRebootFlag done\n");
		return NO_ERROR;
	}
		break;

	case TRANSACTION_getLockType: {
		XLOGI("getLockType\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(getLockType());
		XLOGI("getLockType done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_getOperatorID: {
		XLOGI("getOperatorID\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(getOperatorID());
		XLOGI("getOperatorID done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_getOperatorName: {
		XLOGI("getOperatorName\n");
		data.enforceInterface(descriptor);
		char * ret = getOperatorName();
		if (ret == NULL)
			reply->writeInt32(-1);
		else
			reply->writeInt32(0);
		XLOGI("getOperatorName done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_isHangMoCallLocking: {
		XLOGI("isHangMoCallLocking\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(isHangMoCallLocking());
		XLOGI("isHangMoCallLocking done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_isHangMtCallLocking: {
		XLOGI("isHangMtCallLocking\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(isHangMtCallLocking());
		XLOGI("isHangMtCallLocking\n");
		return NO_ERROR;
	}
		break;

	case TRANSACTION_clearRebootFlag: {
		XLOGI("clearRebootFlag\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(clearRebootFlag());
		XLOGI("clearRebootFlag done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_isBootRecoveryFlag: {
		XLOGI("isBootRecoveryFlag\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(isBootRecoveryFlag());
		XLOGI("isBootRecoveryFlag done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_isWipeSet: {
		XLOGI("isWipeset\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(isWipeSet());
		XLOGI("isWipeset done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_setWipeFlag: {
		XLOGI("setWipeFlag\n");
		data.enforceInterface(descriptor);
		//int len=data.readInt32 ();
		reply->writeInt32(setWipeFlag("FactoryReset", sizeof("FactoryReset")));
		XLOGI("setWipeFlag done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_clearWipeFlag: {
		XLOGI("clearWipeFlag\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(clearWipeFlag());
		XLOGI("clearWipeFlag done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_getUpgradeStatus: {
		XLOGI("getUpgradeStatus\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(getUpgradeStatus());
		XLOGI("getUpgradeStatus done\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_restartAndroid: {
		XLOGI("restartAndroid\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(restartAndroid());
		XLOGI("restartAndroid\n");
		return NO_ERROR;
	}
		break;
	case TRANSACTION_readOtaResult: {
		XLOGI("readOtaResult\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(readOtaResult());
		return NO_ERROR;
	}
		break;
	case TRANSACTION_clearOtaResult: {
		XLOGI("clearOtaResult\n");
		data.enforceInterface(descriptor);
		reply->writeInt32(clearOtaResult());
		return NO_ERROR;
	}
		break;
	default:
		return BBinder::onTransact(code, data, reply, flags);
	}

	return NO_ERROR;
}