]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
ITEM: Implemented get_data
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 6 Feb 2009 16:22:32 +0000 (17:22 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 6 Feb 2009 16:22:32 +0000 (17:22 +0100)
resources/item/FWSN.c
resources/item/FWSN.h
resources/item/Makefile.omk
resources/item/frm_item.c
resources/item/item_idl.idl

index 961d5a0980360baa207f40b658f3ee6d0d7dd34f..b6e9db8507356949c42f1b7355da63ff43c2ebb5 100644 (file)
@@ -359,18 +359,16 @@ returns the data length.
 and the data arrauy in dat.
 returns 0 if there are no available data.
 */
-int getData(unsigned char **dat)
+unsigned getData(unsigned char *dat, unsigned length)
 {
        if ((dataLength > 0) && (dataValid == 1))
        {
-               *dat = (unsigned char *) malloc(dataLength);
-               if (*dat == NULL) exit(-12);
-               memcpy(*dat,data,dataLength);
-               return dataLength;
+               unsigned l = dataLength < length ? dataLength : length;
+               memcpy(dat,data,l);
+               return l;
        }
        else 
        {
-               *dat = NULL;
                return 0;
        }
 }
index c22b6a83bc8f1d1817e658f4f47d6657bd5c5f40..b17fb72d6d08fa146631cb0acce871853b1e9caa 100644 (file)
@@ -58,7 +58,7 @@ returns -2 if "id" is basestation (it is not possible to remove the basestation)
 */
 //*************************************************************************************************************************
 
-int getData(unsigned char **dat);
+unsigned getData(unsigned char *dat, unsigned length);
 /*
 returns the data length.
 and the data arrauy in dat.
index 4d91efdd6093f914f58c63edf4199309a9aa3067..7d13e232dd6b0dea93711efe6d22c66ac38f8efb 100644 (file)
@@ -4,7 +4,7 @@ ifeq ($(CONFIG_RESOURCE_ITEM),y)
 CFLAGS += -std=gnu99
 
 bin_PROGRAMS = frm_item
-frm_item_SOURCES = frm_item.c item_blocks.c
+frm_item_SOURCES = frm_item.c item_blocks.c FWSN.c serialsource.c
 frm_item_SERVER_IDL = item_idl.idl
 frm_item_LIBS = frm forb contract fosa rt ulut fcb_client m
 
index 25b9ad9be43a3d9b0373c221f62868513ca83576..df3794b93e186c73762e17bb76cc72e80b98f91b 100644 (file)
@@ -17,9 +17,7 @@
 #include <stdio.h>
 #include <frsh_distributed.h>
 #include <item.h>
-
-//ITEM ADD
-//#include "FWSN.h"
+#include "FWSN.h"
 
 static inline bool node_present(fres_item_node_mask nodes, int node)
 {
@@ -137,8 +135,15 @@ del_nodes(fres_item_scheduler obj, const fres_item_node_mask mask, CORBA_Environ
 CORBA_long
 get_data(fres_item_scheduler obj, const fres_item_node_mask mask, fres_item_data_seq** data, CORBA_Environment *ev)
 {
+       unsigned max = 256;
        //struct item_status *item_status = (struct item_status*)forb_instance_data(obj);
-       /* TODO: */
+       fres_item_data_seq *d = forb_malloc(sizeof(*d));
+
+       d->_buffer = CORBA_sequence_octet_allocbuf(max); //FIXME: CORBA_sequence_fres_item_data_seq_allocbuf(max);
+       d->_maximum = max;
+       d->_length = getData(d->_buffer, d->_maximum);
+
+       *data = d;
        return 0;
 }
 
index 202f0202c8f4148eb0fdddf829b3f6bc6c17c3f0..2c3d95f8280bfb512e626648371a7369bf8ec948 100644 (file)
@@ -10,7 +10,7 @@
 module fres {
        module item {
                typedef unsigned long long node_mask;
-               typedef sequence<unsigned long> data_seq;
+               typedef sequence<octet> data_seq;
                interface scheduler {
                        /** Adds given nodes to network and stats receiving data from them */
                        long add_nodes(in node_mask mask);