Skip to content
Snippets Groups Projects
common.h 4.03 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef COMMON_ZTE_H
    #define COMMON_ZTE_H
    
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <stdbool.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <signal.h>
    #include <time.h>
    #include <limits.h>
    #include <libubox/list.h>
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    #include <ctype.h>
    
    #include <json-c/json.h>
    #include <string.h>
    
    #include <libubox/blobmsg_json.h>
    
    #include <libxml2/libxml/parser.h>
    #include <libxml/xpath.h>
    #include <libxml/xpathInternals.h>
    
    
    #include "libmobile_wrapper.h"
    
    extern struct device *global_dev;
    
    
    #define debug_print(...)                  \
    
    		if (debug)                        \
    			fprintf(stderr, __VA_ARGS__); \
    	} while (0)
    
    char *get_ip(char *if_name);
    
     *
     * Prints a json_object pointer's json structure to ubus.
     *
     * Parameters:
     * 		parsed_response - A struct json_object pointer to json structure to be printed to ubus.
     * 		ctx - Ubus context containing connection.
     * 		req - Information for from the ubus request.
     *
     * Returns:
     * 		0 On success.
     * 		-1 On failure.
     */
    
    int print_to_ubus(struct json_object *parsed_response, struct ubus_context *ctx, struct ubus_request_data *req);
    
    
    /**
     * Function: json_to_blob
     *
     * Parses a json_object pointer to a corresponding blob buffer.
     *
     * Parameters:
     * 		response - json_object pointer to be replicated in a blob buffer.
    
     * 		bb - The blob buffer pointer to hold the results.
    
    void json_to_blob(struct json_object *response, struct blob_buf *bb);
    
    
    char *xml_parser(struct write_result *result, char *tag);
    
    struct json_object *xml_to_json_converter(struct write_result *result);
    
    
    /**
     * Function: isdigits
     *
     * Checks if a string is made up entirely out of digits.
     *
     * Parameters:
     * 		str - the string to check for digits.
     *
     * Returns:
     * 		true if the string is made up entirely out of digits.
     * 		false if the string contains any non-digit character.
     */
    int isdigits(const char *str);
    
    
    /**
     * Function: validate_puk_format
     *
     * Checks whether a given PUK code is of valid format or not.
     *
     * Parameters:
     * 		puk - the string to check for structure validity
     *
     * Returns:
     * 		0 if the string is of valid format.
     * 		-1 on invalid format.
     */
    
    int validate_puk_format(char *puk);
    
    
    /**
     * Function: validate_pin_format
     *
     * Checks whether a given PIN code is of valid format or not.
     *
     * Parameters:
     * 		pin - the string to check for structure validity
     *
     * Returns:
     * 		0 if the string is of valid format.
     * 		-1 on invalid format.
     */
    
    int validate_pin_format(char *pin);
    
    
    /**
     * Function: pin_status
     *
     * Provides an error response to be used to print a message if the call fails
     * due to pin being disabled. Up to the caller whether the print this message or
     * not (depending on the necessity of pin to be disabled or enabled for the feature).
     *
     * Parameters:
     * 		bb - pointer to the buff.
     *		dev - the device containing the currently active device.
     *
     * Returns:
     * 		0 if the string is of valid format.
     * 		-1 on invalid format.
     */
    
    int pin_status(struct blob_buf *bb, struct device *dev);
    
    
    /**
     * Function: check_response
     *
     * Determines whether the dongle API response was successful or not. Requires the
     * response to be in the format of {"result": "success"} or {"result": "failure"}.
     *
     * Parameters:
     * 		response - the json response to parse for success or failure.
     *
     * Returns:
     * 		0 if the response contained success.
     * 		-1 if the response contained failure.
     */
    
    int check_response(struct json_object *response);
    
    struct json_object *get_json_string_object_by_key(json_object *json_obj, char *string);
    
    
    /**
     * Function: remove_newline
     *
     * Replaces the first newline character ('\n') found by a null-terminating byte ('\0').
     *
     * Parameters:
     * 		response - the json response to parse for success or failure.
     *
     * Returns:
     * 		0 if the response contained success.
     * 		-1 if the response contained failure.
     *
     * IMPORTANT NOTE
     *		Will alter the input string!
     */
    void remove_newline(char *input);
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    #endif