Beispiel #1
0
/* WARNING:  The allocated strings in replacedStrsPtr must be released by the caller */
eEsifError EsifFpcAction_GetParams(
	EsifFpcActionPtr fpcActionPtr,
	EsifDataPtr paramsPtr,
	UInt8 numParams
	)
{
	eEsifError rc = ESIF_OK;
	UInt8 i;

	if ((NULL == fpcActionPtr) || (NULL == paramsPtr)) {
		rc = ESIF_E_PARAMETER_IS_NULL;
		goto exit;
	}

	for (i = 0; i < numParams; i++) {
		rc = EsifFpcAction_GetParamAsEsifData(fpcActionPtr,
			i,
			&paramsPtr[i]);
		if (ESIF_OK != rc) {
			break;
		}
	}
exit:
	return rc;
}
Beispiel #2
0
static eEsifError EsifSetActionDelegateAppc(
	const EsifUpDomainPtr domainPtr,
	const EsifDataPtr requestPtr,
	const EsifFpcActionPtr fpcActionPtr)
{
	eEsifError rc = ESIF_E_PRIMITIVE_ACTION_FAILURE;
	EsifData p2 = { 0 };
	EsifString appName = NULL;
	UInt32 opcode = 0;

	UNREFERENCED_PARAMETER(domainPtr);

	ESIF_ASSERT(NULL != domainPtr);
	ESIF_ASSERT(NULL != requestPtr);
	ESIF_ASSERT(NULL != requestPtr);

	// Action Parameter 2 is App Control Opcode ('STRT','STOP', etc)
	// Primitive requestPtr is App Name ("dptf", ...)
	rc = EsifFpcAction_GetParamAsEsifData(fpcActionPtr, 1, &p2);
	if ((ESIF_OK != rc) || (NULL == p2.buf_ptr)) {
		rc = ESIF_E_INVALID_ARGUMENT_COUNT;
		goto exit;
	}
	if ((p2.type == ESIF_DATA_UINT32) && (p2.data_len == sizeof(UInt32))) {
		opcode = *(UInt32 *)p2.buf_ptr;
	}

	if ((requestPtr->type == ESIF_DATA_STRING) && (NULL != requestPtr->buf_ptr)) {
		appName = (EsifString)requestPtr->buf_ptr;

		switch (opcode) {
		case 'TRTS': // STRT: Start App
			rc = EsifAppMgr_AppStart(appName);
			break;
		case 'POTS': // STOP: Stop App
			rc = EsifAppMgr_AppStop(appName);
			break;
		default:
			rc = ESIF_E_INVALID_REQUEST_TYPE;
			break;
		}
	}

exit:
	return rc;
}
Beispiel #3
0
static eEsifError ESIF_CALLCONV ActionDelegateSet(
	esif_context_t actCtx,
	EsifUpPtr upPtr,
	const EsifFpcPrimitivePtr primitivePtr,
	const EsifFpcActionPtr fpcActionPtr,
	EsifDataPtr requestPtr
	)
{
	eEsifError rc = ESIF_OK;
	EsifData p1 = {0};
	UInt32 method;
	EsifUpDomainPtr domainPtr = NULL;

	UNREFERENCED_PARAMETER(actCtx);
	UNREFERENCED_PARAMETER(upPtr);

	ESIF_ASSERT(NULL != requestPtr);
	ESIF_ASSERT(NULL != requestPtr->buf_ptr);
	ESIF_ASSERT(NULL != primitivePtr);
	ESIF_ASSERT(NULL != fpcActionPtr);
	
	domainPtr = EsifUp_GetDomainById(upPtr, primitivePtr->tuple.domain);
	if (NULL == domainPtr) {
		ESIF_TRACE_ERROR("Unable to get domain\n");
		rc = ESIF_E_PARAMETER_IS_OUT_OF_BOUNDS;
		goto exit;
	}

	rc = EsifFpcAction_GetParamAsEsifData(fpcActionPtr, 0, &p1);
	if ((ESIF_OK != rc) || (NULL == p1.buf_ptr)) {
		ESIF_TRACE_ERROR("Unable to get parameters\n");
		goto exit;
	}

	method = *((UInt32 *)p1.buf_ptr);

	switch (method) {
	
	/* Set Temperature Trip Points */
	case '0TAP':	/* PAT0 */
		ESIF_TRACE_INFO("PAT0 received\n");
		rc = EsifSetActionDelegatePat0(domainPtr, requestPtr);
		break;

	case '1TAP':	/* PAT1 */
		ESIF_TRACE_INFO("PAT1 received\n");
		rc = EsifSetActionDelegatePat1(domainPtr, requestPtr);
		break;

	case 'BSPS':	/* SPSB: Set Participant Sample Behavior */
		ESIF_TRACE_INFO("Set Sample Behavior received\n");
		rc = EsifSetActionDelegateSampleBehavior(domainPtr, requestPtr);
		break;

	case 'PMTV':	/* VTMP: Virtual Temperature */
		ESIF_TRACE_INFO("Set Virtual Temperature received\n");
		rc = EsifSetActionDelegateVirtualTemperature(domainPtr, requestPtr);
		break;

	case 'BHPS':	/* SPHB: Set Participant Hysteresis Behavior */
		ESIF_TRACE_INFO("Set Participant Hysteresis Behavior received\n");
		rc = EsifSetActionDelegateSphb(domainPtr, requestPtr);
		break;

	case 'CSPS':    /* SPSC: Set Platform State Of Charge */
		ESIF_TRACE_INFO("Set OS Battery Percentage received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_OS_BATTERY_PERCENT_CHANGED);
		break;

	case 'SPPS':    /* SPPS: Set Platform Power Source */
		ESIF_TRACE_INFO("Set Platform Power Source received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_OS_POWER_SOURCE_CHANGED);
		break;

	case 'OPDS':    /* SDPO: Set Display Orientation */
		ESIF_TRACE_INFO("Set Display Orientation received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_DISPLAY_ORIENTATION_CHANGED);
		break;

	case 'OVDS':    /* SDVO: Set Device Orientation */
		ESIF_TRACE_INFO("Set Device Orientation received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_DEVICE_ORIENTATION_CHANGED);
		break;

	case 'COMS':    /* SMOC: Set Motion Changed */
		ESIF_TRACE_INFO("Set Motion Changed received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_MOTION_CHANGED);
		break;

	case 'MKDS':    /* SDKM: Set Dock Mode */
		ESIF_TRACE_INFO("Set Dock Mode received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_OS_DOCK_MODE_CHANGED);
		break;

	case 'MLCS':    /* SCLM: Set Cooling Mode */
		ESIF_TRACE_INFO("Set Cooling Mode received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_SYSTEM_COOLING_POLICY_CHANGED);
		break;

	case 'TSLS':    /* SLST: Set Lid State */
		ESIF_TRACE_INFO("Set Lid State received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_OS_LID_STATE_CHANGED);
		break;

	case 'TFPS':    /* SPFT: Set Platform Type */
		ESIF_TRACE_INFO("Set Platform Type received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_OS_PLATFORM_TYPE_CHANGED);
		break;

	case 'AGFS':    /* SFGA: Set Foreground Application */
		ESIF_TRACE_INFO("Set Foreground Application received\n");
		rc = EsifSetActionDelegateToSignalForegroundAppChanged(domainPtr, requestPtr);
		break;

	case 'NOMS':    /* SMON: Set Mobile Notification */
		ESIF_TRACE_INFO("Set Mobile Notification request received\n");
		rc = EsifSetActionDelegateToSignalOSEvent(domainPtr, requestPtr, ESIF_EVENT_OS_MOBILE_NOTIFICATION);
		break;

	case 'TESR':    /* RSET: Reset Override */
		ESIF_TRACE_INFO("Reset Override request received\n");
		rc = EsifSetActionDelegateRset(domainPtr, requestPtr);
		break;

	case 'LAVE':    /* EVAL: Re-evaluate participant capabilities */
		ESIF_TRACE_INFO("Re-evaluate participant capabilities request received\n");
		rc = EsifSetActionDelegateEvaluateParticipantCaps(domainPtr, requestPtr);
		break;

	case 'CPPA':    /* APPC: Application Control  */
		ESIF_TRACE_INFO("Application Control\n");
		rc = EsifSetActionDelegateAppc(domainPtr, requestPtr, fpcActionPtr);
		break;

	case 'PASS':	/* SSAP: Specific Action Primitive execution */
		rc = EsifSetActionDelegateSsap(upPtr, requestPtr);
		break;

	default:
		rc = ESIF_E_NOT_IMPLEMENTED;
		break;
	}
exit:
	return rc;
}
Beispiel #4
0
static eEsifError ESIF_CALLCONV ActionDelegateGet(
	esif_context_t actCtx,
	EsifUpPtr upPtr,
	const EsifFpcPrimitivePtr primitivePtr,
	const EsifFpcActionPtr fpcActionPtr,
	const EsifDataPtr requestPtr,
	const EsifDataPtr responsePtr
	)
{
	eEsifError rc = ESIF_OK;
	EsifData p1 = {0};
	UInt32 method;
	EsifUpDomainPtr domainPtr = NULL;

	UNREFERENCED_PARAMETER(actCtx);
	UNREFERENCED_PARAMETER(upPtr);

	ESIF_ASSERT(NULL != responsePtr);
	ESIF_ASSERT(NULL != responsePtr->buf_ptr);
	ESIF_ASSERT(NULL != primitivePtr);
	ESIF_ASSERT(NULL != fpcActionPtr);

	domainPtr = EsifUp_GetDomainById(upPtr, primitivePtr->tuple.domain);
	if (NULL == domainPtr) {
		ESIF_TRACE_ERROR("Unable to get domain\n");
		rc = ESIF_E_PARAMETER_IS_OUT_OF_BOUNDS;
		goto exit;
	}

	rc = EsifFpcAction_GetParamAsEsifData(fpcActionPtr, 0, &p1);
	if ((ESIF_OK != rc) || (NULL == p1.buf_ptr)) {
		ESIF_TRACE_ERROR("Unable to get parameters\n");
		goto exit;
	}

	method = *((UInt32 *)p1.buf_ptr);

	switch (method) {
	/* Get Temperature Trip Points */
	case '0TTG':	/* GTT0 */
		rc = EsifGetActionDelegateGtt0(domainPtr, responsePtr);
		break;

	case '1TTG':	/* GTT1 */
		rc = EsifGetActionDelegateGtt1(domainPtr, responsePtr);
		break;

	case 'PMT_': /* _TMP */
		rc = EsifGetActionDelegateTemp(domainPtr, requestPtr, responsePtr);
		break;

	case 'GFNC': /* CNFG */
		rc = EsifGetActionDelegateCnfg(domainPtr, requestPtr, responsePtr);
		break;

	case 'PMTV': /* VTMP */
		rc = EsifGetActionDelegateVirtualTemperature(domainPtr, responsePtr);
		break;

	default:
		rc = ESIF_E_NOT_IMPLEMENTED;
		break;
	}
exit:
	return rc;
}