mirror of
				https://github.com/espressif/esp-protocols.git
				synced 2025-10-30 22:21:39 +01:00 
			
		
		
		
	fix(modem): Use generated AT command definitions for IDE navigation
BREAKING CHANGE: inc headers for AT command definitions are no longer used directly, but pregenerated into *.h(pp)
This commit is contained in:
		
							
								
								
									
										62
									
								
								components/esp_modem/scripts/generate.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										62
									
								
								components/esp_modem/scripts/generate.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Default list of files to process if no arguments are provided | ||||
| default_files=("generate/include/cxx_include/esp_modem_command_library.hpp" | ||||
|                "generate/include/cxx_include/esp_modem_dce_module.hpp" | ||||
|                "generate/include/cxx_include/esp_modem_dce_generic.hpp" | ||||
|                "generate/src/esp_modem_modules.cpp" | ||||
|                "generate/include/esp_modem_api.h") | ||||
|  | ||||
| # Set the processing directory (defaults to the script's location/..) | ||||
| script_dir="$(dirname "$(realpath "$0")")" | ||||
| default_processing_dir="$(realpath "$script_dir/..")" | ||||
|  | ||||
| # Parse optional arguments | ||||
| if [ -n "$1" ]; then | ||||
|   # If one argument is provided, treat it as a single file to process | ||||
|   files=("$1") | ||||
| else | ||||
|   # Use default list if no file argument is provided | ||||
|   files=("${default_files[@]}") | ||||
| fi | ||||
|  | ||||
| # If a second argument is provided, set it as the processing directory | ||||
| if [ -n "$2" ]; then | ||||
|   processing_dir="$(realpath "$2")" | ||||
| else | ||||
|   processing_dir="$default_processing_dir" | ||||
| fi | ||||
|  | ||||
| # Process each file | ||||
| for file in "${files[@]}"; do | ||||
|   # Determine the input and output paths based on processing directory | ||||
|   in_file="$processing_dir/$file" | ||||
|   out_file="${processing_dir}/${file/generate/command}" | ||||
|   current_file_dir="$(dirname "$in_file")" | ||||
|  | ||||
|   # Ensure the output directory exists | ||||
|   mkdir -p "$(dirname "$out_file")" | ||||
|  | ||||
|   echo "Processing $in_file" | ||||
|  | ||||
|   # Process the header and includes -- just paste the content (without expanding) | ||||
|   sed -n '1,/ESP-MODEM command module starts here/{/ESP-MODEM command module starts here/d;p}' "$in_file" > "$out_file" | ||||
|  | ||||
|   # Determine whether to use clang or clang++ based on file extension | ||||
|   if [[ $file == *.cpp || $file == *.hpp ]]; then | ||||
|     compiler="clang++ -E -P -CC -xc++" | ||||
|   elif [[ $file == *.rst ]]; then | ||||
|     compiler="clang -E -P -xc" | ||||
|   else | ||||
|     compiler="clang -E -P -CC -xc" | ||||
|   fi | ||||
|  | ||||
|   # Preprocess everything else to expand command prototypes or implementations | ||||
|   sed -n '1,/ESP-MODEM command module starts here/!p' "$in_file" | \ | ||||
|   $compiler -I"$script_dir" -I"$processing_dir/generate/include" -I"$processing_dir/include" -I"$current_file_dir" -  >> "$out_file" | ||||
|   # Add potential footer (typically closing C++ sentinel) | ||||
|   sed -n '1,/ESP-MODEM command module ends here/!p' "$in_file" >> "$out_file" | ||||
|   if [[ $out_file != *.rst ]]; then | ||||
|     astyle --style=otbs --attach-namespaces --attach-classes --indent=spaces=4 --convert-tabs --align-pointer=name --align-reference=name --keep-one-line-statements --pad-header --pad-oper --unpad-paren --quiet --max-continuation-indent=120 "$out_file" | ||||
|   fi | ||||
| done | ||||
		Reference in New Issue
	
	Block a user