Exemple #1
0
template<typename Container, typename PointT> void
octree_base<Container, PointT>::saveToFile ()
{
    // Create JSON object
    boost::shared_ptr<cJSON> idx (cJSON_CreateObject (), cJSON_Delete);

    cJSON* name = cJSON_CreateString ("test");
    cJSON* version = cJSON_CreateNumber ( OUTOFCORE_VERSION_ );
    cJSON* pointtype = cJSON_CreateString ("urp");
    cJSON* lod = cJSON_CreateNumber (static_cast<double>(root_->m_tree_->max_depth_));

    // cJSON does not allow 64 bit ints.  Have to put the points in a double to
    // use this api, will allow counts up to 2^52 points to be stored correctly
    std::vector<double> lodPoints_db;
    lodPoints_db.insert (lodPoints_db.begin (), lodPoints_.begin (), lodPoints_.end ());

    cJSON* numpts = cJSON_CreateDoubleArray ( &(lodPoints_db.front ()), static_cast<int>(lodPoints_db.size ()) );

    cJSON_AddItemToObject (idx.get (), "name", name);
    cJSON_AddItemToObject (idx.get (), "version", version);
    cJSON_AddItemToObject (idx.get (), "pointtype", pointtype);
    cJSON_AddItemToObject (idx.get (), "lod", lod);
    cJSON_AddItemToObject (idx.get (), "numpts", numpts);
    cJSON_AddStringToObject(idx.get(), "coord_system", coord_system_.c_str());

    char* idx_txt = cJSON_Print (idx.get ());

    std::ofstream f (treepath_.string ().c_str (), std::ios::out | std::ios::trunc);
    f << idx_txt;
    f.close ();

    free (idx_txt);
}
Exemple #2
0
    void
    OutofcoreOctreeBaseMetadata::serializeMetadataToDisk ()
    {
      // Create JSON object
      boost::shared_ptr<cJSON> idx (cJSON_CreateObject (), cJSON_Delete);
  
      cJSON* name = cJSON_CreateString (tree_name_.c_str ());
      cJSON* version = cJSON_CreateNumber ( __PCL_OUTOFCORE_VERSION__ );
      cJSON* pointtype = cJSON_CreateString (point_type_.c_str ());
      cJSON* lod = cJSON_CreateNumber (static_cast<double> (levels_of_depth_));

      // cJSON does not allow 64 bit ints.  Have to put the points in a double to
      // use this api, will allow counts up to 2^52 points to be stored correctly
      //or split into LSB MSB?
      std::vector<double> lodPoints_db;
      lodPoints_db.insert (lodPoints_db.begin (), LOD_num_points_.begin (), LOD_num_points_.end ());

      cJSON* numpts = cJSON_CreateDoubleArray ( &(lodPoints_db.front ()), static_cast<int>(lodPoints_db.size ()));

      cJSON_AddItemToObject (idx.get (), "name", name);
      cJSON_AddItemToObject (idx.get (), "version", version);
      cJSON_AddItemToObject (idx.get (), "pointtype", pointtype);
      cJSON_AddItemToObject (idx.get (), "lod", lod);
      cJSON_AddItemToObject (idx.get (), "numpts", numpts);
      cJSON_AddStringToObject(idx.get(), "coord_system", coordinate_system_.c_str());

      char* idx_txt = cJSON_Print (idx.get ());

      std::ofstream f (metadata_filename_.string ().c_str (), std::ios::out | std::ios::trunc);
      f << idx_txt;
      f.close ();

      free (idx_txt);
    }
DiagnosticVisualisation::DiagnosticVisualisation(UdpClient *udpClient,
		unsigned int numberParticles, Particle2 *particleTable,
		RoboclawProxy *roboClaw, HokuyoProxy *hokuyo) {

	client = udpClient;
	NumberParticles = numberParticles;
	Particles = particleTable;
	RoboClaw = roboClaw;
	Hokuyo = hokuyo;

	rootJSON = cJSON_CreateObject();
	roboClawJSON = cJSON_CreateObject();
	hokuyoJSON = cJSON_CreateObject();
	particlesJSONTable = cJSON_CreateArray();

	//cJSON_AddItemToObject(rootJSON, "RoboClaw", roboClawJSON);
	cJSON_AddItemToObject(rootJSON, "Hokuyo", hokuyoJSON);
	cJSON_AddItemToObject(rootJSON, "Particles", particlesJSONTable);

	hokuyoJSONAngleTable = cJSON_CreateDoubleArray(Hokuyo->Angles,
			Hokuyo->Length);
	hokuyoJSONDistancesTable = cJSON_CreateIntArray(Hokuyo->Distances,
			Hokuyo->Length);

	cJSON_AddItemToObject(hokuyoJSON, "Angles", hokuyoJSONAngleTable);
	cJSON_AddItemToObject(hokuyoJSON, "Distances", hokuyoJSONDistancesTable);

	cJSON *itemParticle;
	cJSON *tableCalculatedProbability;
	cJSON *tableCalculatedDistances;

	for (unsigned int i = 0; i < NumberParticles; i++) {
		itemParticle = cJSON_CreateObject();

		cJSON_AddNumberToObject(itemParticle, "X", Particles[i].X);
		cJSON_AddNumberToObject(itemParticle, "Y", Particles[i].Y);
		cJSON_AddNumberToObject(itemParticle, "P", Particles[i].P);
		cJSON_AddNumberToObject(itemParticle, "Angle", Particles[i].Angle);

		tableCalculatedProbability = cJSON_CreateDoubleArray(
				Particles[i].CalculatedProbability, Particles[i].Length);

		cJSON_AddItemToObject(itemParticle, "CalculatedProbability",
				tableCalculatedProbability);

		tableCalculatedDistances = cJSON_CreateDoubleArray(
				Particles[i].CalculatedDistances, Particles[i].Length);
		cJSON_AddItemToObject(itemParticle, "CalculatedDistances",
				tableCalculatedDistances);

		cJSON_AddItemToArray(particlesJSONTable, itemParticle);
	}

	/*particlesJSONTable = cJSON_CreateArray();

	 cJSON *itemParticle;
	 for(int i = 0; i < NumberParticles;i++)
	 {
	 itemParticle = cJSON_CreateObject();

	 cJSON_AddNumberToObject(itemParticle,"X",Particles[i].X);


	 cJSON_AddItemToArray(particlesJSONTable,itemParticle);
	 }

	 */

//	cJSON_AddItemToObject(particlesJSON,"Particle",particlesJSONTable);
//(Particles,
//		NumberParticles);
//cJSON_AddNumberToObject(particlesJSON,"X",)
	char * rendered = cJSON_Print(rootJSON);

	printf(rendered);
	fflush(NULL);

	Hokuyo->Distances[0] = 777;
	Hokuyo->Angles[0] = 555;

	Particles[0].X = Particles[0].Angle = 888;

	Particles[0].CalculatedDistances[0] = 0.7777;
	Particles[0].CalculatedProbability[0] = 5000;

	Send();

	rendered = cJSON_Print(rootJSON);

	printf(rendered);
	fflush(NULL);

	//particlesJSONTable = cJSON_CreateArray();

	//cJSON_AddItemToArray()

//

//	cJSON_AddItemToObject(particlesJSON, "X", )

//cJSON_AddNumberToObject()

//cJSON_AddItemToObject(rootJSON,

	/*cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));
	 cJSON_AddItemToObject(root, "format", fmt = cJSON_CreateObject());
	 cJSON_AddStringToObject(fmt, "type", "rect");
	 cJSON_AddNumberToObject(fmt, "width", 1920);
	 cJSON_AddNumberToObject(fmt, "height", 1080);
	 cJSON_AddFalseToObject (fmt, "interlace");
	 cJSON_AddNumberToObject(fmt, "frame rate", 24);

	 {
	 "name": "Jack (\"Bee\") Nimble",
	 "format": {
	 "type":       "rect",
	 "width":      1920,
	 "height":     1080,
	 "interlace":  false,
	 "frame rate": 24
	 }
	 }

	 */
}
Exemple #4
0
cJSON* CHPRepPayloadToJson(OCRepPayload* repData)
{
    cJSON *outJson = cJSON_CreateObject();
    if (outJson == NULL)
    {
        return NULL;
    }

    OCRepPayloadValue* val = repData->values;
    while (val)
    {
        switch (val->type)
        {
            case OCREP_PROP_NULL:
                break;
            case OCREP_PROP_INT:
                OIC_LOG_V(DEBUG, TAG, "%s(int):%d", val->name, (int)val->i);
                cJSON_AddNumberToObject(outJson,val->name,(int)val->i);
                break;
            case OCREP_PROP_DOUBLE:
                OIC_LOG_V(DEBUG, TAG, "%s(double):%f", val->name, val->d);
                cJSON_AddNumberToObject(outJson,val->name,val->d);
                break;
            case OCREP_PROP_BOOL:
                OIC_LOG_V(DEBUG, TAG, "%s(bool):%s", val->name, val->b ? "true" : "false");
                cJSON_AddBoolToObject(outJson,val->name,val->b);
                break;
            case OCREP_PROP_STRING:
                OIC_LOG_V(DEBUG, TAG, "%s(string):%s", val->name, val->str);
                cJSON_AddStringToObject(outJson,val->name,val->str);
                break;
            case OCREP_PROP_OBJECT:
            {
                cJSON *objJson = CHPRepPayloadToJson(val->obj);
                if (objJson != NULL)
                {
                    cJSON_AddItemToObject(outJson,val->name,objJson);
                }
                break;
            }
            case OCREP_PROP_ARRAY:
            {
                unsigned int i = 0;
                int arraySize = (int)val->arr.dimensions[0];
                switch (val->arr.type)
                {
                    case OCREP_PROP_INT:
                        OIC_LOG_V(DEBUG, TAG, "%s(int array)", val->name);
                        if (arraySize > 0)
                        {
                            int castVal[val->arr.dimensions[0]];
                            for (i = 0 ; i < (unsigned int)arraySize ; i++)
                            {
                                castVal[i] = (int)val->arr.iArray[i];
                            }
                            cJSON *array = cJSON_CreateIntArray(castVal,arraySize);
                            if (array != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,array);
                            }
                        }
                        break;
                    case OCREP_PROP_DOUBLE:
                        OIC_LOG_V(DEBUG, TAG, "%s(double array)", val->name);
                        if (arraySize > 0)
                        {
                            cJSON *array = cJSON_CreateDoubleArray(val->arr.dArray,arraySize);
                            if (array != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,array);
                            }
                        }
                        break;
                    case OCREP_PROP_STRING:
                        OIC_LOG_V(DEBUG, TAG, "%s(string array)", val->name);
                        if (arraySize > 0)
                        {
                            cJSON *array = cJSON_CreateStringArray((const char**)val->arr.strArray,
                                                                   arraySize);
                            if (array != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,array);
                            }
                        }
                        break;
                    case OCREP_PROP_OBJECT:
                        if (arraySize > 0)
                        {
                            cJSON *arrayJson = cJSON_CreateArray();
                            for (i = 0 ; i < (unsigned int)arraySize ; i++)
                            {
                                cJSON *objJson = CHPRepPayloadToJson(val->arr.objArray[i]);
                                if (objJson != NULL && arrayJson != NULL)
                                {
                                    cJSON_AddItemToArray(arrayJson, objJson);
                                }
                            }
                            if (arrayJson != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,arrayJson);
                            }
                        }
                        break;
                    case OCREP_PROP_BOOL:
                        //TODO : Not support - cJSON_CreateBoolArray
                        break;
                    default:
                        OIC_LOG_V(ERROR, TAG, "Unknown/unsupported array type: %s", val->name);
                        break;
                }
                break;
            }
            default:
                OIC_LOG_V(ERROR, TAG, "Unknown type: %s", val->name);
                break;
        }
        val = val->next;
    }

    if( repData->values != NULL)
    {
        return outJson;
    }
    else
    {
        cJSON_Delete(outJson);
        return NULL;
    }
}
Exemple #5
0
void cJSONExt_AddDoubleArrayToObject(cJSON* object, const char* name, double* vars, int numinarray)
{
    cJSON* jsonarray = cJSON_CreateDoubleArray( vars, numinarray );
    cJSON_AddItemToObject( object, name, jsonarray );
}