DÍA 340 DE 365

Fase 5: Diseño Industrial y Hardware

📖 Teoría a Estudiar

El Campo Minado de las Licencias (MIT vs GPL)

En el software corporativo, no puedes copiar y pegar código de internet a ciegas. Si descargas una librería I2C con licencia GPL (General Public License), acabas de inyectar un virus legal en tu proyecto. La licencia GPL es "Copyleft" o "Viral"; exige que cualquier proyecto que la utilice deba abrir el 100% de su código fuente al público. Si usas GPL, tendrías que publicar tus algoritmos anti-fraude y llaves privadas de AWS.

Por otro lado, la licencia MIT (o Apache 2.0 / BSD) es "Permisiva". Te permite usar, modificar y vender el código en productos comerciales cerrados, siempre y cuando mantengas el aviso de derechos de autor original en los archivos de texto. El firmware industrial profesional se nutre exclusivamente de código MIT o propietario.

Git Submodules: Compartir sin Exponer

¿Cómo publicas tu talento en GitHub sin revelar los secretos de tu máquina? Identifica el Código Agnostic (Agnóstico). Tu función ultra-rápida de Fast_IntToStr_FixedPoint o tu driver LCD no saben qué es el "Gas LP", ni procesan dinero. Son utilidades puras. Moveremos estos archivos a repositorios públicos separados con licencia MIT, y los "inyectaremos" en tu proyecto privado corporativo utilizando Git Submodules.

ARQUITECTURA DE REPOSITORIOS: GIT SUBMODULES MOBAGAS_FIRMWARE_CORE PRIVATE REPO PROPIEDAD INTELECTUAL (CERRADA) main.c (FSM Principal) metrology_compensation.c (Desgaste) security_fraud_detection.c (Anti-Hack) CARPETA: /lib/ (SUBMÓDULOS GIT) @submodule -> stm32_fast_itoa @submodule -> stm32_lcd_driver github.com/TuPerfil/stm32_fast_itoa utils_fast_string.c LICENCIA: MIT github.com/TuPerfil/stm32_lcd_driver lcd_i2c_core.c LICENCIA: MIT El repositorio privado clona los repositorios públicos como referencias estáticas (Submodules).

⚙️ Procedimiento Práctico: Git Submodules en Acción

Paso 1: Crear el Repositorio Público (Portfolio).
Vas a GitHub y creas un repositorio público llamado stm32_fast_itoa. Subes únicamente los archivos .c y .h que escribimos en el Día 336 para convertir números sin usar sprintf. Le añades un archivo LICENSE seleccionando la plantilla "MIT License". Este es tu escaparate al mundo.

Paso 2: Inyectarlo en tu Proyecto Cerrado.
En la terminal, navegas al directorio raíz de tu proyecto privado MOBAGAS_FIRMWARE. En lugar de copiar y pegar el código, ejecutas:
git submodule add https://github.com/TuUsuario/stm32_fast_itoa.git lib/stm32_fast_itoa
Git descargará el código en la carpeta lib/, pero no lo mezclará con tu historia principal. Creará un puntero. Si mañana mejoras la librería pública, solo tienes que entrar a la carpeta y hacer git pull para que la máquina se actualice.

💻 Firmware: La Cabecera Legal (Copyright Header)

Todo archivo público debe protegerte legalmente de demandas (cláusula "AS IS" de la licencia MIT). Al inicio de tus archivos agnósticos, debes incrustar el sello de autoría. El núcleo de tu proyecto (privado) llevará un sello distinto de "Todos los derechos reservados".


/**
 * ============================================================================
 * @file utils_fast_string.h
 * @brief Algoritmos ultra ligeros de conversión Int a String sin stdio.h
 * @author Tu Nombre o Alias (El Arquitecto)
 * @date Septiembre 2026
 * 
 * MIT License
 * 
 * Copyright (c) 2026 [Tu Nombre]
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 * ============================================================================
 */

#ifndef UTILS_FAST_STRING_H
#define UTILS_FAST_STRING_H

#include <stdint.h>

// Prototipos públicos
uint8_t Fast_IntToStr_FixedPoint(uint32_t value, char* buffer, uint8_t decimal_places);

#endif // UTILS_FAST_STRING_H
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Estrategia de Portafolio y Protección de Propiedad Intelectual Corporativa.

Un ingeniero júnior trabaja en silencio durante 3 años en un proyecto cerrado. Cuando termina y busca un nuevo empleo o clientes, su GitHub está vacío y tiene que convencerlos con su palabra. Un Arquitecto diseña su base de código pensando en la modularidad desde el primer día.

Al identificar que el cálculo de desgaste mecánico es un secreto industrial que vale millones (Privado), pero que la máquina de estados de los botones y el driver SPI de la pantalla son herramientas genéricas, dividiste tu código fuente. Creaste pequeños repositorios públicos con licencia **MIT** que actúan como tu portafolio profesional en GitHub. Al importarlos como **Git Submodules** en el núcleo privado del Despachador de Gas, mantuviste el "Golden Master" (Día 329) limpio, auditable y modular. Demostraste al mundo tu rigor en C a nivel Bare-Metal, sin violar la sagrada Propiedad Intelectual de tu Tesis. Dominas el hardware, dominas el negocio, y ahora, dominas tu proyección pública.

📝 Resumen del Día