// int javax.darjeeling.sensors.ADC.read(short)
void javax_darjeeling_sensors_ADC_int_read_short()
{
	dj_exec_stackPopShort();

	// No ADCs.
	dj_exec_createAndThrow(BASE_CDEF_java_lang_IndexOutOfBoundsException);
}
// int javax.darjeeling.Darjeeling.getNodeId()
void javax_darjeeling_Darjeeling_int_getNodeId()
{
#ifdef IS_COOJA
	dj_exec_stackPushInt(node_id);
#else
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
#endif
}
void javax_darjeeling_Darjeeling_int_getNodeId()
{
#ifdef NODEID
    dj_exec_stackPushInt(NODEID);
#else
//	dj_exec_stackPushInt(TOS_NODE_ID);
    dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
#endif
}
// void javax.darjeeling.actuators.Leds.set(short, boolean)
void javax_darjeeling_actuators_Leds_void_set_short_boolean()
{
	uint16_t on = dj_exec_stackPopShort();
	uint16_t nr = dj_exec_stackPopShort();

	// Check for out-of-bounds
	if (nr>=0 && nr<NUM_VIRTUAL_LEDS)
		nesc_setLed(nr, on);
	else
		dj_exec_createAndThrow(BASE_CDEF_java_lang_IndexOutOfBoundsException);
}
void javax_wukong_wkpf_WKPF_void_registerWuClass_short_byte__()
{
	dj_int_array *byteArrayProperties = REF_TO_VOIDP(dj_exec_stackPopRef());
	// check null
	if (byteArrayProperties==nullref){
		dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
	}
	uint16_t wuclass_id = (uint16_t)dj_exec_stackPopShort();
	DEBUG_LOG(DBG_WKPF, "WKPF: Registering virtual wuclass with id %x\n", wuclass_id);
	wkpf_error_code = wkpf_register_virtual_wuclass(wuclass_id, NULL, byteArrayProperties->array.length, (uint8_t *)byteArrayProperties->data.bytes);
}
// void javax.darjeeling.Darjeeling.printBytesAsString(byte[])
void javax_darjeeling_Darjeeling_void_printBytesAsString_byte__()
{
    dj_int_array* byteStr = REF_TO_VOIDP(dj_exec_stackPopRef());
    // check null
    if (byteStr==nullref) {
        dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
    }

    //nesc_printf(byteStr->data.bytes);
    if (nesc_printf(byteStr->data.bytes)==0)
        blockThreadForPrintf();
}
// void javax.ostfriesentee.Ostfriesentee._print(java.lang.String)
void javax_ostfriesentee_Ostfriesentee_void__print_java_lang_String()
{
	// Pop string object from the stack.
	BASE_STRUCT_java_lang_String * stringObject = (BASE_STRUCT_java_lang_String*)REF_TO_VOIDP(dj_exec_stackPopRef());

	if (stringObject == NULL)
	{
		dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
		return;
	}

	// Get byte array
	dj_int_array * byteArray = (dj_int_array*)REF_TO_VOIDP(stringObject->value);

	if (byteArray == NULL)
	{
		dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
		return;
	}

	write(1, byteArray->data.bytes, stringObject->count);
}
// void javax.ostfriesentee.Ostfriesentee._print(byte[])
void javax_ostfriesentee_Ostfriesentee_void__print_byte__()
{
	// Get byte array
	dj_int_array * byteArray = (dj_int_array*)REF_TO_VOIDP(dj_exec_stackPopRef());

	if (byteArray == NULL)
	{
		dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
		return;
	}

	write(1, byteArray->data.bytes, byteArray->array.length);
}
// void javax.darjeeling.Darjeeling.print(byte[])
void javax_darjeeling_Darjeeling_void_print_byte__() {
    int i;
    dj_int_array * byteArray = REF_TO_VOIDP(dj_exec_stackPopRef());
    // check null
    if (byteArray==nullref) {
        dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
    }
    char temp[byteArray->array.length];
    for (i = 0; i < byteArray->array.length; i ++) {
        temp[i] = byteArray->data.bytes[i];
    }
    if (nesc_printf(temp)==0)
        blockThreadForPrintf();
}
void javax_darjeeling_Darjeeling_void__print_java_lang_String()
{
	// Pop string object from the stack.
	BASE_STRUCT_java_lang_String * stringObject = (BASE_STRUCT_java_lang_String*)REF_TO_VOIDP(dj_exec_stackPopRef());

	if (stringObject == NULL)
	{
		dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
		return;
	}

	// Get byte array
	dj_int_array * byteArray = (dj_int_array*)REF_TO_VOIDP(stringObject->value);

	if (byteArray == NULL)
	{
		dj_exec_createAndThrow(BASE_CDEF_java_lang_NullPointerException);
		return;
	}

	for (int i=0; i<byteArray->array.length; i++)
		printf("%c", byteArray->data.bytes[i]);
}
Пример #11
0
// byte[] javax.radio.Radio._readBytes()
void javax_radio_Radio_byte____readBytes()
{
	int length = tossim_peekMessageLength();

	dj_int_array * arr = dj_int_array_create(T_BYTE, length);
	if (arr==NULL)
	{
		dj_exec_createAndThrow(BASE_CDEF_java_lang_OutOfMemoryError);
		return;
	}
	void * data = tossim_popMessageBuffer();
	if (data==NULL)
	{
		dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
		return;
	}


	memcpy(arr->data.bytes, data, length);

	dj_exec_stackPushRef(VOIDP_TO_REF(arr));
	//avoid deadlocks
}
void java_lang_Object_java_lang_String_toString()
{
    // Don't pop, just peek the object reference off the runtime stack,
    // because it's cleared by the VM's frame management.
    dj_object * obj = REF_TO_VOIDP(dj_exec_stackPeekRef());

    // Get class definition
    runtime_id_t classRuntimeId = dj_mem_getChunkId(obj);
    dj_global_id classGlobalId = dj_vm_getRuntimeClass(dj_exec_getVM(), classRuntimeId);

    // Get class name
    dj_di_pointer classDefinition = dj_global_id_getClassDefinition(classGlobalId);
    dj_local_id classNameLocalId = dj_di_classDefinition_getClassName(classDefinition);
    dj_global_id classNameGlobalId = dj_global_id_resolve(classGlobalId.infusion, classNameLocalId);

    dj_object * string = dj_jstring_createFromGlobalId(dj_exec_getVM(), classNameGlobalId);

    if (string==NULL)
        dj_exec_createAndThrow(BASE_CDEF_java_lang_OutOfMemoryError);
    else
        dj_exec_stackPushRef(VOIDP_TO_REF(string));

}
// void javax.darjeeling.radio.Radio._init(int)
void javax_darjeeling_radio_Radio_void__init_int()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// boolean javax.darjeeling.radio.Radio._send(short, byte[])
void javax_darjeeling_radio_Radio_boolean__send_short_byte__()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// void javax.darjeeling.radio.Radio._broadcast(byte[])
void javax_darjeeling_radio_Radio_void__broadcast_byte__()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// short javax.darjeeling.radio.Radio.getMaxMessageLength()
void javax_darjeeling_radio_Radio_short_getMaxMessageLength()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// void javax.darjeeling.radio.Radio.setOutputPower(short)
void javax_darjeeling_radio_Radio_void_setOutputPower_short()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// byte javax.darjeeling.sensors.ADC.getResolution(short)
void javax_darjeeling_sensors_ADC_byte_getResolution_short()
{
	// No ADCs.
	dj_exec_createAndThrow(BASE_CDEF_java_lang_IndexOutOfBoundsException);
}
// int javax.darjeeling.Darjeeling.getSolarVoltage()
void javax_darjeeling_Darjeeling_int_getSolarVoltage()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// void javax.darjeeling.radio.Radio._waitForMessage()
void javax_darjeeling_radio_Radio_void__waitForMessage()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// int javax.darjeeling.Darjeeling.getBoardTemperature()
void javax_darjeeling_Darjeeling_int_getBoardTemperature()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// byte javax.darjeeling.radio.Radio._getNumMessages()
void javax_darjeeling_radio_Radio_byte__getNumMessages()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// int javax.darjeeling.Darjeeling.getADC(short)
void javax_darjeeling_Darjeeling_int_getADC_short()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}
// short javax.darjeeling.radio.Radio.getLastChannel()
void javax_darjeeling_radio_Radio_short_getLastChannel()
{
	dj_exec_createAndThrow(BASE_CDEF_java_lang_VirtualMachineError);
}